2012-03-30 2 views
0

그래서 4 페이지 있습니다. 그들은 매우 간단합니다.파일 업로드 및 다른 PHP 페이지로 이동

의 index.php (WORKS)

<html> 
<form action="upload.php" method="POST" enctype="multipart/form-data"> 
<input type="file" name="file"><br /> 
<input type="submit" value="Now upload it!"> 
</form> 
</html> 

upload.php로 (WORKS)

<?php 
if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Error: " . $_FILES["file"]["error"] . "<br />"; 
    } 
else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />"; 
    echo "Stored in: " . $_FILES["file"]["tmp_name"]; 

    echo 'Are you sure you want to continue saving this file'; 
    echo '<a href="yes.php">Yes, continue</a> 
    <br /> 
    <br /> 
    <a href="no.php">No thanks</a>' 
    } 
?> 

no.php (WORKS)

<?php 
echo 'Thanks anyway'; 
?> 

yes.php (ERROR)

<?php 
    if ($_FILES["file"]["error"] > 0) 
     { 
     echo "Error: " . $_FILES["file"]["error"] . "<br />"; 
     } 
    else 
     { 
     echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
     echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
     echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />"; 
     echo "Stored in: " . $_FILES["file"]["tmp_name"]; 

     echo 'We will now save this document:'; 
     //Save document code 
     } 
    ?> 
네의

출력 :

Notice: Undefined index: file in /home/public_html/test/yes.php on line 2 Invalid file 

We will now save this document:? 

내가 저장 결코 볼 수 있듯이. 하지만 yes.php 페이지에 저장하고 싶습니다. 업로드 된 원본 문서를 검색 할 수 있습니까? 미리 감사드립니다.

+0

'$ _FILES' var이 페이지를 변경할 때 설정 해제되어 작동하지 않는다고 생각합니다. 하지만'$ _POST'에 URI를,'yes.php'에'fopen()'을 넘길 수 있습니다. – Jon

+0

@JamesWilliams가 맞습니다. 디스크에 저장하고 사용자가 "저장하지 않으려는 경우"링크를 해제하십시오(). –

답변

2

업로드 된 파일은 노래 만 사용할 수 있습니다. PHP 인스턴스/요청주기.
업로드 된 파일은 임시 디렉토리에 저장됩니다. 스크립트가 실행을 마칠 때까지 계속 남아 있으면 PHP는 필요하지 않다고 가정 할 때 스크립트를 삭제합니다.

파일을 유지하려면 동일한 요청에서 파일을 업로드 한 곳으로 이동해야합니다.

1

양식에서 다른 페이지로 파일을 전달하려고합니다. 게시 값은 더 이상 유효하지 않습니다. upload.php 파일을 임시 폴더에 저장하고 거기에서 $ _GET [] 또는 세션 변수를 통해 예 또는 아니오 페이지로 전달하는 것이 좋습니다. no.php 페이지에서

은 해당 파일을 가지고

unlink($somefile); 

이것은 서버에서 파일을 삭제합니다 사용합니다.

yes.php 페이지에서 파일을 이동하거나 복사합니다. 파일을 복사하면 unlink을 사용하여 임시 파일을 제거합니다.

+0

그래서 사용자가 페이지를 종료하면 어떻게됩니까? 파일이 아직 존재합니까? 기술적으로 나는 그것을 삭제할 것이 아무것도 실행하지 않았기 때문에. – EGHDK

+1

시간 소인이있는 데이터베이스에 임시 파일 이름을 추가하십시오. x 분보다 오래된 것은 삭제해야합니다. 그들이 예 또는 아니오라고 말하면, 임시 파일은 어쨌든 삭제되었을 것입니다. –

+0

@EGHDK 미스터 수요일 조언과 함께 갈 수 있습니다 또는 일부 또는 모든 페이지에서 파일의 나이를 확인하고 너무 많은 분 후에 삭제하고 파일을 삭제할 수 있습니다. 캐시 된 버전의 웹 사이트를 보유하고 있습니다. –

0

일시적으로 파일을 저장 move_uploaded_file()를 사용해보십시오 다음

$tmpFile = $_GET["filename"]; 

를 사용

<a href="yes.php?filename=tmp_file_path">Yes, continue</a> 
<a href="no.php?filename=tmp_file_path">No thanks</a> 

그런 다음 yes.php에서 파일 이름을 검색 사용하여 파일 정보를 전달 또는 전혀 그것을 제거 할 수 있습니다. PHP를 사용하여

unlink($_GET["filename"]);