用户填写表单时上传文件

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案1】:

这是一种方法

第 1 部分

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

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

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

第 2 部分

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

第 3 部分

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

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

第 4 部分

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

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

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

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

【讨论】:

非常感谢,在接受您的回答之前,我一直在等待其他解决方案的其他答案 @Khalid Amin -- 没问题。正如我在 A 中提到的,这是少数解决方案之一,并且在需要扩展的部分中有一些零碎的部分,但简而言之,这种方法应该可以正常工作

以上是关于用户填写表单时上传文件的主要内容,如果未能解决你的问题,请参考以下文章

ajax上传文件 基于jquery form表单上传文件

ElementUI 上传组件upload,上传文件时自定义参数

当用户单击“打开”时上传文件输入表单

文件上传

form里面文件上传并预览

如何在某个网页上自动填写表单并上传附件,并提交。页面上用的是type = file这个东西