2010-08-26 57 views
0

我需要模仿上傳表單的工作方式。我需要將文件存儲到數據庫並將$ _FILES上傳到我們的文件夾中。模型的每一位代碼和表單本身都是基於遺留代碼的問題。我沒有膽量去除所有代碼並重新開始。我更喜歡讓它成爲

因此,我的目標是如何在不使用以前的表單的情況下上傳文件,然後僅序列化/反序列化由文件名和url組成的對象。而文件本身通過複製功能已經成爲故事,並且不會上傳表單。

+2

如果上傳失敗,$ _FILES'實際上並不存儲文件本身,只是文件的原始名稱,服務器文件系統上的臨時位置,MIME類型,大小和錯誤代碼(這也會使大多數其他領域的空白)。 – Powerlord 2010-08-26 13:53:43

回答

1

任何特定請求的$ _FILES數組的唯一關鍵部分是...['tmp_name']部分,因爲它指向PHP保存上載文件的位置。保存設置爲您想要測試的方式的$ _FILES副本(無論您需要多少文件),然後手動將tmp_name更改爲指向服務器上的實際文件,而不是PHP自動分配的用於上載的隨機垃圾名稱,並且只要腳本不移動/刪除/粘貼指向的文件,您就可以多次重複使用該數據的副本。

所以,像這樣:

$_FILES['file1']['tmp_name'] = '/path/to/file/to/test/with'; 
$_FILES['file2']['tmp_name'] = '/some/other/path/or/file/for/testing'; 

$savedfiles = serialize($_FILES); 

,然後你可以堅持一個

$_FILES = unserialize($savedfiles); 

無論它是適用於測試您的應用程序。

1

是的,可以序列化$ _FILES數組;

$upload = serialize($_FILES["file"]); 
1

如果你的代碼依賴於$_FILES變量則內容是,分配給它(的內容是否是從數據庫或任何序列化版本)應該有預期的行爲。

一般來說,設計一個小測試是一個更好的方法來找出是否有什麼東西可以滿足您的特定情況,而不是讓人們在互聯網上進行推測。

相關問題