2014-09-10 1 views
0

필드가 너무 많은 양식이 있습니다. 다음과 같이 이러한 필드 중 하나는 : PHP에서 Session을 사용하여 파일을 업로드 할 수없는 이유는 무엇입니까?

<form action="go_to_preview.php" role="form" method="post" enctype="multipart/form-data"> 
    <input type="file" name="equip_image" id="equip_image"> 
</form> 

지금 파일 go_to_preview.php의 목적은 라벨의 형태로 사용자에 의해 채워진 데이터를 표시하는 것입니다. 채워진 모든 데이터는 숨겨진 필드에도 포함됩니다. 이 양식에는 제출 단추가 하나 있습니다. 사용자가 기입 한 것이 무엇이든 찾으면 사용자는 파일 go_to_preview.php에있는 제출 버튼을 클릭합니다. 사용자가 제출 버튼을 클릭하자마자 나는 $_POST을 통해받은 데이터를 데이터베이스에 추가 할 것입니다. 이제 파일 컨트롤이 포함 된 페이지에서 사용자가 선택한 파일을 업로드 할 수 없습니다. 모든 것이 잘 진행

//go_to_preview.php 
session_start(); 
$_SESSION['FILES'] = $_FILES; 

//final.php 
session_start(); 
$files_var = $_SESSION['FILES']; 
//use $files_var 
unset($_SESSION['FILES']); 

지금까지 다음과 같이 내가 세션에 $_FILES 배열을 보내고있다 (숨겨진 필드에 데이터가 존재하는 배열입니다) $_POST과 함께. 이제 양식을 제출하면 선택한 파일을 서버에 업로드해야합니다. 그것을 위해 나는 final.php 파일에 다음 논리를 썼습니다.

move_uploaded_file($_SESSION['FILES']['equip_image'], $target); 
unset($_SESSION['FILES']); 

이 함수는 제대로 실행되지만 서버로 파일이 업로드되지 않습니다. 누군가 나를 도와 줄 수 있습니까? 미리 감사드립니다. 내 의심의 여지가 분명히 당신도 내 문제의 명확한 아이디어를 얻기 위해 내 다음과 같은 질문을 참조 할 수 있습니다하지 않는 경우 : 당신이 세션에서 나중에 업로드 된 파일을 저장하려고하는 코드 순서에 따라 How to get the $_FILES array data as it is after form submission in following scenario?

+0

@Flosculus : 명확한 아이디어를 얻으려면 내 질문을 참조하십시오. http://stackoverflow.com/questions/25752228/how-to-get-the-files-array-data-as-it-is-after- form-submission-in-following-sc – user2839497

+0

미안 파일 데이터가'$ _FILES'에 실제로 저장되지 않았기 때문에 그 주석을 삭제했습니다. 그럼에도 불구하고 업로드 된 파일을 영구적으로 이동시키고 있습니까? 이것은 요청의 지속 기간 동안 만 일시적이기 때문에 생성되었습니다. – Flosculus

+1

명확하게하기 위해 이미지를 세션으로 옮긴 다음 이후 요청에서 같은 세션에서 이미지를 검색하려고합니까? 문제는 PHP 세션이 매우 일시적 일 수 있으므로 자주 데이터가 손실된다는 것입니다. 비동기 업로드를 원할 경우 PHPResque와 같은 대기열을 사용하는 것이 좋습니다. 그렇게 할 수 없다면 최소한 이미지를 폴더로 옮기고 큐를 폴더처럼 처리하는 순진 구현을 사용하십시오. –

답변

5

final.php에서 처리 또는 표시 할 때 사용하십시오. 업로드 한 모든 파일은 임시 폴더로 이동하며 연결이 끊기기 전에 영구 저장 장치로 이동해야합니다. 연결이 닫히 자마자 서버가 임시 파일을 삭제하려고합니다. 업로드 한 파일을 애플리케이션의 영구 공간에 저장해야합니다. 아파치에 대한 쓰기 권한이있는 폴더를 업로드 한 다음 세션에 파일에 대한 링크를 저장할 수 있습니다.

+0

+1 이전 질문에 대한 답이 이것을 설명했는지 확실하지 않습니다. – Flosculus

+0

+1은 tem 파일에 대해 설명합니다. –

+1

그는 자신의 질문에 따라 사용자가 양식을 채우길 원하지만 사용자가 검토 후 최종 제출하기 전까지는 데이터를 저장하지 않으므로 위에서 언급 한 것처럼 파일에는 불가능한 세션에 데이터를 저장하려고합니다. –

관련 문제