我的表單太多了。其中一個領域是如下:爲什麼我無法使用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
收到的數據添加到數據庫中。 現在我的問題是我無法從包含文件控制的頁面上載用戶選擇的文件。隨着$_POST
(這是目前數據的數組到隱藏字段),我要送的$_FILES
陣列中的會話如下:
//go_to_preview.php
session_start();
$_SESSION['FILES'] = $_FILES;
//final.php
session_start();
$files_var = $_SESSION['FILES'];
//use $files_var
unset($_SESSION['FILES']);
到目前爲止一切順利。現在,當我提交表單時,我必須將所選文件上傳到服務器。爲此,我在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?
@Flosculus:爲了得到清晰的想法,你可以參考我的問題http://stackoverflow.com/questions/25752228/how-to-get-the-files-array-data-as-it-is-after- form-submission-in-following-sc – user2839497 2014-09-10 10:23:41
對不起,我刪除了那條評論,因爲我忘記了文件數據實際上並沒有存儲在'$ _FILES'中。儘管如此,你是否將上傳的文件移至永久的地方?因爲它僅在創建請求期間是暫時的。 – Flosculus 2014-09-10 10:25:09
爲了澄清,您正在將圖像移動到會話中,然後嘗試在稍後的請求中從同一會話中檢索圖像?問題是PHP會話可能非常短暫,所以你會遭受頻繁的數據丟失。如果你想做異步上傳,你最好使用隊列 - 比如PHPResque。如果你無法做到這一點,那麼至少應該使用一個天真的實現,將圖像移動到一個文件夾中,並將該文件夾視爲一個隊列。上傳文件後 – 2014-09-10 10:25:17