【问题标题】:Upload files while user is filling form用户填写表单时上传文件
【发布时间】:2016-05-28 14:39:07
【问题描述】:

我正在创建一个表单,用户可以在其中发布包含照片的广告。用户在访问此表单之前无需登录/注册。我需要在用户填写表格时异步上传照片。 (例如,gumtree.com.au 允许您在制作新广告时上传照片)

我知道我们可以在用户选择文件后立即开始上传文件。但是,在服务器端,当用户提交表单时,以后如何识别这些文件?如果用户放弃未填写的表单,如何处理上传的文件?

正确实现这一目标的典型设计模式是什么?

【问题讨论】:

    标签: node.js html forms server-side


    【解决方案1】:

    这是一种方法

    第 1 部分

    当用户访问您的网站时,它会联系服务器并发送随机生成的 10 个字母数字字符,例如 (Xf4ht5Y4u9)。这是用户识别码

    在客户端用一点 javascript 和 ajax 就可以轻松实现

    在服务器端,您可以使用 PHP 创建一个以用户标识符代码命名的临时目录

    第 2 部分

    用户上传文件并异步发送到这个临时文件夹

    第 3 部分

    用户填写表单 = true --- 执行操作,例如处理表单和图像,将它们从临时文件夹中移出。临时文件夹现在是空的。如果您希望在功能上使用它,它可以用于下一批上传。您可以等待上传成功回调,以防文件仍在上传

    用户填写表格 = false --- 上传的文件因为没有被处理而留在临时文件夹中。

    第 4 部分

    服务器端看家。如果距当前日期超过 x 天,则每天检查一次临时文件夹,然后将其删除以节省空间。可以在任何平台上使用 shell 脚本完成

    如果您担心未处理的文件会在服务器上停留多长时间,请更改上述逻辑。例如,每小时运行一次内务管理并检查临时文件夹的使用时间是否大于 6 小时或其他任何情况

    万一用户现在上传文件并在 6 小时内填写表格,然后在服务器端,您可以向客户端报告文件已被删除,他们需要再次上传。但这一切都取决于空间是否是一个问题。

    您可以在 5 小时后自动打开一个弹出窗口,说上传的文件将被删除,因为它们尚未填写表格。

    【讨论】:

    • 非常感谢,在接受您的回答之前,我一直在等待其他解决方案的其他答案
    • @Khalid Amin -- 没问题。正如我在 A 中提到的,这是少数解决方案之一,并且在需要扩展的部分中有一些零碎的部分,但简而言之,这种方法应该可以正常工作
    猜你喜欢
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 2022-01-20
    • 2013-11-10
    • 1970-01-01
    相关资源
    最近更新 更多