我使用web2py开发了一个Web门户。门户网站有一个输入表单,由用户填写。表格中有5个步骤。在最后一步,有大量的文件上传字段。
如果用户在填写表单后遇到表单验证错误,则必须再次从上载字段上传文件。因为在表单验证错误后重置文件上载字段。如果用户只需要填写一个表单,这是可以接受的。但是当用户必须填写数百个类似的表格来输入数据时,用户就变得很困难。
即使在表单验证错误之后,我也希望实现一个保留文件上传字段的功能。有没有办法使用html或php实现这一点,或者是否有内置于web2py的内容。
如果有人之前做过类似的事情,请告诉我。
答案 0 :(得分:3)
保留文件上载字段需要知道用户本地计算机上文件的路径,浏览器不允许这样做,因为它会成为安全漏洞。您可以采用一些替代方法,但web2py不包含实现它们的内置功能。</ p>
一个选项是在提交表单之前进行初始客户端验证(或者如果需要任何服务器端数据库查找,可以通过Ajax进行验证)。出于安全考虑,您仍然希望进行服务器端验证,但这至少会阻止用户提交最终无法通过验证的数据。
另一个选择是让用户初始提交除文件之外的所有数据,然后仅在成功提交其他数据后才上传文件。
最后,在服务器端,当验证失败时,您可以将上载的文件存储在临时位置。然后,返回的表单可以显示成功上载的文件的文件名,同时还包括文件上载小部件,以防用户想要更改任何上载的文件。成功提交表单后,您可以将临时存储的文件复制到正确的位置。在这种情况下,您需要某种方式将特定表单提交与临时文件相关联,并且您可能还需要运行定期任务来清理孤立的临时文件。