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