当重定向返回时,保留表单输入的文件路径


Retaining file path for form input when redirecting back?

我正在使用CakePHP编写一个web应用程序。现在,在保存失败并被重定向回添加或编辑屏幕后,插入的数据将返回到表单字段中供用户编辑。这正是我想要的,问题是文件上传字段没有保留。当用户选择要上传的图像时,是否有一种方法可以保留文件输入表单字段的路径?

谢谢

现代浏览器将模糊文件输入的值,以隐藏有关客户机文件系统的信息。这包括通过javascript访问输入值,浏览器将返回类似C:'fakepath'file.txt的内容。

设置文件输入的值通常也是不允许的,无论是通过在HTML中设置value属性,还是通过javascript。因此,您将无法恢复输入字段的前一个值,即使您能以某种方式找到它是什么。你自己试试:

http://jsfiddle.net/MP39Q/2/

(这些限制有一些例外,例如早期版本的IE,但我想这对你没有帮助。)

由于用户的路径没有作为表单数据的一部分发送,所以它在PHP中不可用。

在您的情况下,解决方案可能是将上传的文件保留在服务器上。当保存错误发生时,将对临时文件的适当引用传递回表单(例如通过会话数据),并允许用户选择是否保留原始文件,或者在他们修改表单的其他部分时选择一个新文件进行上传。

可以,但我认为这不是一个好主意:如果用户在一段时间内没有响应并且会话超时,则文件可能会被删除。您应该在单独的表单(在单独的页面上)中创建上传文件,或者手动管理您自己的上传过程。