2014-12-31 41 views
0

submited形式後,我有一個如何補充文件輸入有錯誤

<input type="text" name="name"> 
<input type="file" name="photo"> 

提交後,它形成,我發現了一些錯誤,所以,我做的:

<input type="text" name="name" value="<?php echo htmlspecialchars($_POST['name']); ?>"> 
<input type="file" name="photo" value="WHAT HERE?!"> 

正如你所看到的,我不知道我需要寫什麼值attr才能填充用戶選定的文件。 我可以這樣做嗎?

謝謝!

回答

2

不幸的是,這不能做,因爲它提供了太多的安全隱患。上傳文件時,瀏覽器不會獲得實際的文件路徑,而是會創建臨時文件(路徑值爲C:\ fakepath),以便在處理時發送給服務器。因此,您可以通過POST傳遞任何值,您可以將其放回到輸入中以選擇文件。

另一種方法是使用AJAX進行表單驗證,這樣用戶永遠不會離開頁面,直到表單準備好提交。

1

我能做到這一點?

不,你不能。出於安全原因,對於type="file"的輸入元素 ,值屬性將被忽略。

可能的解決方法:

  • 保持在一個隱藏的輸入提交文件的引用(存儲在磁盤上)。向用戶顯示一條消息,告知該文件不需要再次輸入,因爲您之前的失敗提交中已包含該文件。
  • 通過AJAX提交表單。
  • 儘可能在客戶端使用javascript驗證以避免重新加載。這將假定啓用了javascript。
+0

在第一個解決方法中,當您說「保存對提交的文件(存儲在磁盤上)的引用」時,是否引用存儲在服務器上的臨時文件? – Choma