繁体   English   中英

单击“提交”按钮时,保留<input type =“file”>字段中的值

[英]Retaining the value in the <input type=“file”> field when submit button is clicked

我有一个<input type="file" >字段以及表单中的其他文本字段,当我尝试使用浏览按钮上传任何文件然后单击提交按钮时,输入类型=“文件”字段中的值消失,如果其他字段中存在错误,我希望浏览的值保留在<input type="file" >字段中,是否有任何方法可以保留浏览的值并使其保留在<input type="file" >单击提交按钮时的字段,

<form action="form.php" method="post" enctype= multipart/form-data> 

<input type="file" value="$file" name="file"/> 
<input type="text" value="$line" name="line"> 
 <input type="submit"  name="btnsubmit"> 

</form> 

if($_POST['btnsubmit']) 
{
$line =$_POST['line'];
$file =$_FILES['file'] ['name'];

if($line) 
{
//do something
//conditions for   file check   here 

}
else 
//error 

}

这是不可能的。 浏览器安全性阻止您预填充文件输入字段,以便网站无法在用户未经授权的情况下窃取其遗嘱的私人文件(通过单击“浏览...”并选择文件)。

编辑:本不可能这样做 - 但您可以尝试一些CSS向导来显示以前选择的文件名,可能在文件输入框旁边提示用户。 如果您想尝试并且非常酷,您还可以尝试将浏览器的本机文件输入文本显示区域与另一个填充了先前文件名的div叠加。 但这会阻止点击输入区域,因此用户不友好。 太多的工作,很少的奖励。

出于安全目的,这不允许由任何脚本设置,由浏览器供应商作为readonly文件输入实现。

有一种方法可以做到这一点。 使用AJAX提交方法提交表单详细信息以进行验证,以便用户永远不会真正离开页面或“提交”表单。 这样,您可以验证服务器端的结果,但用户仍然填充了所有值,包括文件输入。

如上所述, input[type=file]是只读的。 通过验证客户端的输入,除非所有字段都有效,否则可以阻止提交。 ......而且,在大多数情况下,它提供了更好的用户体验!

查看jquery.validation或您喜欢的框架的其他验证插件,或自己编写一个。 请记住,您还应该在服务器端进行验证。

通过阻止请求,文件输入将保持其值,直到所有字段都正常。 如果您需要服务器端验证,也可以使用ajax执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM