2016-07-27 62 views
0

我想上傳圖片Facebook風格:在提交表單之前選擇圖片,當他們全部上傳時,立即提交表格。我知道如何在前端做到這一點,但問題出在後端。我發現了一些管理後端圖像的方法,但我並不滿意。所有這些都是避免存儲不會使用的照片,例如,如果用戶關閉了瀏覽器,而某些照片已經上傳。我想到做上傳的3種方式,我不知道這將是最好的:在表單提交之前上傳圖片Django

  1. 創建「TMP」的目錄,並把所有上傳的照片在那裏,當表單提交的所有移動使用的照片到另一個目錄。 (使用此方法可能會出現一些併發問題)
  2. 在我的數據庫中創建TempPhoto表格,並執行與上一個解決方案相同的操作,將使用的照片從TempPhoto移動到永久表格。
  3. 將照片直接添加到永久表中,並在預定時間擦除未使用的照片(與其他實體無關)。 (我想這將是更慢的解決方案)

回答

1

我認爲你的第一種方式與一些改革是最好的方式。您可以創建tmp目錄併爲每個圖像附加一個獨立數據(例如IP地址),以控制併發性,然後在$(window).unload(...)中寫入一些腳本,用於向後端發送信號,以便在用戶從tmp目錄中刪除圖像時在提交表格之前關閉窗口。

+0

這種方式仍然存在與單個用戶併發的問題,想象用戶上傳許多照片的速度如此之快以至於生成相同的唯一ID(例如IP +「1」)。我該如何在Django中處理這個問題?我在文章中提到的第二種方式處理併發性,你放棄它,因爲在表之間移動表項比在目錄之間移動要慢? –

+0

實際上,您可以通過添加一些額外的數據(例如圖像哈希值或自動增量ID)使其更加獨特。在評論中你的問題的答案是YES。我認爲這個過程在處理數據庫時會比使用'tmp'目錄時慢得多。 –