使用Laravel 5.2
,我正在製作一個上傳表單,該表單應該允許用戶選擇多達10個圖像,顯示其預覽,然後讓他對它們進行排序,添加更多圖像或刪除他不想上傳的圖像。如何使用Laravel臨時存儲文件?
的排序和刪除預覽可以很方便地使用JavaScript實現,但除此之外,我有一個很難搞清楚如何正確地做休息。我最初的想法是從輸入中獲取js文件數組,然後將其移動到另一個數組,並在用戶與圖像預覽進行交互後使用該數組,並使用FileReader
顯示圖像預覽。
一旦他提交表單我想創建一個FormData
對象,刪除輸入當前的文件,並添加所有有效的:
var formdata = new FormData(document.getElementById('upload-form'));
if (formdata.has('pic[]') && validFiles.length) {
formdata.delete("pic[]");
var len = validFiles.length;
for (i = 0; i < len; i++) {
formdata.append("pic[]", validFiles[i]);
}
}
如果你知道你的方式周圍的js,你已經可以看到,這種方法有嚴重的問題,當談到向後compatibillity,爲FormData.delete(..)
,.append(..)
和.has(..)
方法不受舊的瀏覽器(包括Chrome 50和低於或幾乎任何IE)
好的廢這一想法的支持。我的第二個想法是做到以下幾點:
- 用戶選擇圖像添加
- 上傳說,使用圖像Ajax和他們臨時存儲使用Laravel
- 返回圖片預覽某處
- 讓用戶使用預覽重新排序文件或刪除它們並跟蹤他所做的事情。
- 表單提交後,將所有其他信息,確定永久存儲哪些文件以及刪除和保存哪些文件。
現在我不太清楚如何做到這一點。我在考慮爲這些圖像創建一個tmp目錄,生成某種類型的字符串作爲與用戶會話關聯的目錄名稱,將文件存儲在那裏,並使用Session
保存目錄名稱。
的問題,這是Session
似乎有一個全球性的超時,不能設置爲過期在說15分鐘。我看到的另一個問題是,一旦Session
過期並且用戶決定不上載圖像,他們將永遠留在服務器上,因爲我無法找到一種方法,允許我在Session
屆滿時執行代碼。
那麼,什麼是做臨時文件存儲在Laravel的正確方法? 或者我在這裏走錯了方向,你能看到更好的方法來做我想做的事嗎?
在此先感謝您的任何建議。