如何在提交错误的表单后重新填写文件输入

时间:2014-12-31 22:44:16

标签: php forms

我有一个

<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 个答案:

答案 0 :(得分:2)

不幸的是,这不可能,因为它带来了太多的安全风险。上传文件时,浏览器不会获得实际的文件路径,而是创建一个临时文件(路径值为C:\ fakepath),它可以在处理时发送给服务器。因此,没有值可以通过POST传递给您可以放回输入以选择文件的值。

另一种方法是使用AJAX进行表单验证,这样用户永远不会离开页面,直到表单准备好提交。

答案 1 :(得分:1)

  

我能这样做吗?

不,你不能。出于安全原因,输入元素将忽略value属性 type="file"

可能的解决方法:

  • 在隐藏的输入中保留对提交的文件(存储在磁盘上)的引用。向用户显示一条消息,告知该文件不需要再次输入,因为您已经从以前的失败提交中获得了该文件。
  • 通过AJAX提交表单。
  • 使用javascript在客户端尽可能验证以避免重新加载。这将假设启用了javascript。