2012-03-30 34 views
0

所以我有4頁。他們非常簡單。把文件上傳並轉到另一個PHP頁面

的index.php(工程)

<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的(工程)

<?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(工程)

<?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 2012-03-30 04:40:15

+0

@JamesWilliams是對的。將其保存到磁盤,如果用戶想要「不保存」,則取消鏈接()。 – 2012-03-30 04:58:16

回答

2

上傳的文件只適用於唱歌PHP實例/請求週期。
上傳的文件存儲在臨時目錄中。如果腳本在執行完畢後仍然存在,那麼假定您不需要它們,PHP將刪除它們。

如果您要保留該文件,則必須將其移至其他位置,以便與該文件上傳的請求相同。

1

您試圖將文件從表單傳遞到不同的頁面,然後打算。帖子值將不再有效。我建議將upload.php中的文件保存到臨時文件夾中,然後通過$ _GET []或會話變量將它傳遞給yes或no頁面。

在no.php頁面,你會採取這一文件,並使用

unlink($somefile); 

這會從您的服務器刪除該文件。

在yes.php頁面上,我將移動或複製文件。如果您複製該文件,我將使用取消鏈接來刪除臨時文件。

+0

那麼,如果用戶退出該頁面呢?該文件是否仍然存在? 因爲我在技術上沒有運行任何會刪除它的東西。 – EGHDK 2012-03-30 05:02:24

+1

將臨時文件名添加到具有時間戳的數據庫中。超過x分鐘的任何內容都應該刪除。如果他們說是或否,臨時文件將被刪除。 – 2012-03-30 05:27:23

+0

@EGHDK可以與週三先生建議,或者在任何或所有頁面中包含文件年齡檢查,並在很多分鐘後刪除並刪除文件。我用這個有一個緩存版本的網站。 – 2012-03-30 14:03:38

0

你可以嘗試使用move_uploaded_file()臨時保存文件,然後通過使用

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

然後檢索yes.php文件名使用

$tmpFile = $_GET["filename"]; 

文件信息或沒有將其刪除。 php使用

unlink($_GET["filename"]); 
相關問題