【问题标题】:Persist file upload html forms in web2py在 web2py 中持久化文件上传 html 表单
【发布时间】:2016-03-20 05:43:47
【问题描述】:

我使用 web2py 开发了一个门户网站。门户有一个由用户填写的输入表单。表格中有 5 个步骤。最后一步有一堆文件上传字段。

如果用户在填写表单后遇到表单验证错误,他必须再次从上传字段上传文件。因为文件上传字段在表单验证错误后被重置。如果用户只需填写一张表格,这是可以接受的。但是当他必须填写数百个类似的表格来输入数据时,用户就变得困难了。

我想实现一个功能,即使在表单验证错误之后也能保留文件上传字段。有没有办法使用 html 或 php 来实现这一点,或者 web2py 中有内置的东西。

如果有人以前做过类似的事情,请告诉我。

【问题讨论】:

    标签: php python html web2py


    【解决方案1】:

    持久化文件上传字段需要知道用户本地计算机上文件的路径,而浏览器不允许这样做,因为这将是一个安全漏洞。您可以采取一些替代方法,但 web2py 不包含实现它们的内置功能。

    一种选择是在提交表单之前进行初始客户端验证(或者如果您需要任何服务器端数据库查找,也可以通过 Ajax 进行验证)。出于安全目的,您仍然希望进行服务器端验证,但这至少可以防止用户提交最终无法通过验证的数据。

    另一种选择是让用户初始提交所有数据除了文件,然后仅在其他数据成功提交后上传文件。

    最后,在服务器端,当验证失败时,您可以将上传的文件存储在一个临时位置。然后,返回的表单可以显示成功上传文件的文件名,同时还包括文件上传小部件,以防用户想要更改任何上传的文件。成功提交表单后,您可以将临时存储的文件复制到正确的位置。在这种情况下,您需要某种方式将特定表单提交与临时文件相关联,并且您可能还需要运行定期任务来清理孤立的临时文件。

    【讨论】:

    • 感谢您的输入,我将进行初始客户端验证。最初的提交将是矫枉过正。如果第一个选项不起作用,我会尝试第二个选项。
    猜你喜欢
    • 2013-01-25
    • 2020-04-05
    • 2013-09-26
    • 1970-01-01
    • 2016-05-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多