我有一個PHP腳本,用戶可以上傳圖像。該圖像存儲在臨時目錄中並返回給用戶。用戶然後可以使用JavaScript界面裁剪圖像。 (x1,y2)(x2,y2)被髮送到用於裁剪圖像的腳本。然後將其返回給用戶進行另一個預覽和\或裁剪。一旦用戶足夠滿意,他將點擊「保存」。臨時文件被複制到原始文件並刪除臨時文件。這些不是每個用戶的圖像,而是設備的圖像。組織中的任何用戶都可以替換設備的任何圖像。這種方法是好的,但也有一些問題:在PHP中處理臨時文件情況的好方法
1)假設用戶上傳的預覽圖像,但然後關閉瀏覽器窗口。我將留下一個臨時文件。這可能成爲一個問題。當然,我可以讓CRON清理它們,但理論上我可以擁有大量的臨時文件(這很醜陋)。 cron還可以在編輯過程中刪除用戶的臨時文件。
2)爲了處理數1 I總是可以有每件設備的一個臨時文件,如equip1.temp和equip1.jpg。所有上傳都存儲在equip1.temp中,所有提交都轉移到equip1.jpg。如果兩個用戶試圖在同一時間上傳同一臺設備的圖片,這可能混亂起來(可能性很小+不是一個問題,但還是醜)
3)我總是可以通過圖像來回(用戶「上傳」圖像並將其回顯爲<img src="base64....." />
。生成的edits +原始base64字符串將被髮送回PHP進行處理)。此解決方案可以解決臨時文件問題,但我發現需要幾秒鐘來回發送高分辨率圖像。
你會如何處理這種情況?
使用選項#2,而且還包括在文件名中'用戶id',如'equip1-user123.temp'。 – air4x
如果user123離開計算機而又不再回來,該怎麼辦?臨時文件將永遠存在。如果用戶被允許一次只編輯一個圖像,那麼N個用戶有N *#個文件 – user974896
,您可以將該文件名保存在用戶表中。然後定期運行一個cron,刪除用戶表中不存在的文件。 – air4x