我正在用PHP創建一個在線遊戲,用戶可以創建可玩角色。每個角色都可以有用戶上傳的肖像。玩家可以同時擁有多個角色,並且隨時可以更改他們的圖片。自然,圖片必須調整大小並重新壓縮以避免大文件。這裏是我的問題:你如何處理PHP中的臨時圖片上傳?
當玩家改變了數據(其中的圖片),然後在擊中「保存」,服務器端驗證踢它檢查之類的非唯一字符的名稱,空的必填字段等。如果發現任何錯誤,則顯示它們。在這種情況下,表單應該預先填入玩家輸入的數據,所以他只需要更改錯誤位,而不是重新輸入所有內容。但是,你如何將這張照片保存在這種「臨時」狀態?
我無法預先填充文件上傳字段,瀏覽器不允許這樣做。如果我將它保存在一個臨時文件中,則必須在某個時候清理圖片,因爲玩家可以簡單地關閉瀏覽器並中止整個過程。那應該是什麼時候?我應該爲臨時文件選擇什麼文件名?如果玩家在兩個瀏覽器標籤中打開相同的角色進行編輯,他們不應該衝突(他們每個人都應該擁有自己的副本)。
你會如何解決這個問題?
不錯的答案。 Upvoted。然而,聽起來很奇怪,我的客戶不喜歡cron工作,因爲他沒有和他們打交道,也不想要新的未經測試的東西。也許你可以在沒有cron作業的情況下想出另一個解決方案? – 2009-09-15 18:47:58
當然,只需將目錄清理整合到圖像上傳處理代碼中即可。創建/更新驗證完成(成功)並刪除臨時映像文件後,掃描目錄的其餘部分以查找過期映像並刪除它們。 – pix0r 2009-09-15 19:07:47
呃...這是一個選項。實際上,我已經決定將它存儲在會話中而不是臨時文件夾中(我將會話存儲在MySQL中)。由於調整後的圖像會很小,我認爲這不是什麼大問題。 – 2009-09-15 19:16:01