用户填写表单时上传文件
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 中提到的,这是少数解决方案之一,并且在需要扩展的部分中有一些零碎的部分,但简而言之,这种方法应该可以正常工作以上是关于用户填写表单时上传文件的主要内容,如果未能解决你的问题,请参考以下文章