用户填写表单时上传文件

时间:2016-02-17 03:37:26

标签: html node.js html5 forms server-side

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

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

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

1 个答案:

答案 0 :(得分:2)

这是一种方法

第1部分

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

可以通过客户端的一些javascript和ajax轻松实现

在服务器端,您可以使用PHP创建一个以用户标识符代码

命名的临时目录

第2部分

用户上传文件并将它们异步发送到此临时文件夹

第3部分

用户填写表格= true ---执行操作,例如处理表单和图片,将其从临时文件夹中移出。临时文件夹现在为空。如果你想要这个功能,它可以用于下一批上传。您可以等待上传成功回调,以防文件仍在上传

用户填写表单= false ---上传的文件会保留在临时文件夹中,因为它们尚未处理完毕。

第4部分

服务器端保管。如果从当前日期开始超过x天数,则每天检查一次临时文件夹,并删除它们以节省空间。可以在任何平台上使用shell脚本完成

如果您担心未处理的文件在服务器上闲置多长时间,请更改上述逻辑。例如,每小时运行房屋并检查临时文件夹的年龄是否> <6小时或其他

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

你可以在5小时后自动打开一个弹出窗口,说明上传的文件很快就会被删除,因为它们还没有填写表格。