我有幾個文本輸入和一個文件的HTML表單。保留選擇文件時,HTML表單無效
如果有任何的投入是無效的,形式再次顯示與他們以前的答案作爲默認值用戶。我知道如何用文本輸入做到這一點,但有沒有辦法用這個文件做到這一點?
我有幾個文本輸入和一個文件的HTML表單。保留選擇文件時,HTML表單無效
如果有任何的投入是無效的,形式再次顯示與他們以前的答案作爲默認值用戶。我知道如何用文本輸入做到這一點,但有沒有辦法用這個文件做到這一點?
您將無法與文件輸入要做到這一點,因爲這會帶來安全問題。相反,考慮在提交時執行一些客戶端驗證。在客戶端邏輯中,確定是否應該中止提交(在發生頁面刷新之前)或是否應允許提交(將數據和文件發送到服務器)。
作爲建議,jQuery Validation plugin極其良好的構造的之間的客戶端的開發非常流行。如果您決定處理客戶端驗證,我會鼓勵您考慮這一點。
重要:客戶端驗證是不是爲服務器端驗證取代。它僅用於補充服務器上已有的驗證邏輯。
不,沒有辦法遺憾的是,由於安全原因左右。 :(
正如其他人所說,你不能預先(或重新)填充文件輸入字段。你也不應該,因爲用戶每次提交文件時都必須一次又一次地上傳文件
你可以做的最簡單的事情就是保持Session中的文件,並向用戶顯示有一個文件已經上傳,如果用戶選擇上傳另一個文件,則替換Session中的文件。
僞代碼:
if ($_POST) // upon upload
{
$saved_file_name = save_image_somewhere($_POST['file'])
$_SESSION['file'] = $saved_file_name
}
...
if ($_SESSION['file'])
{
<p>Uploaded file: { echo $_SESSION['file'] }</p>
<p>Select another file below if you want to replace it.</p>
}
<input type="file" />
+1爲F的提採取客戶端驗證不安全的行爲。 (請參閱http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx笑) – icktoofay 2010-02-19 05:36:30