我正在创建一个表单,用户可以在其中发布包含照片的广告。在访问此表单之前,用户无需登录/注册。我需要在用户填写表单时异步上传照片。 (例如,gumtree.com.au允许您在创建新广告时上传照片)
我知道我们可以在用户选择文件后立即开始上传文件。但是,在服务器端,如何在用户提交表单时识别这些文件?如果用户放弃未填写的表单,如何处理上传的文件?
正确实现这一目标的典型设计模式是什么?
答案 0 :(得分:2)
这是一种方法
第1部分
当用户访问您的网站时,它会联系服务器并发送随机生成的10个字母数字字符,例如(Xf4ht5Y4u9)。这是用户标识符代码
可以通过客户端的一些javascript和ajax轻松实现
在服务器端,您可以使用PHP创建一个以用户标识符代码
命名的临时目录第2部分
用户上传文件并将它们异步发送到此临时文件夹
第3部分
用户填写表格= true ---执行操作,例如处理表单和图片,将其从临时文件夹中移出。临时文件夹现在为空。如果你想要这个功能,它可以用于下一批上传。您可以等待上传成功回调,以防文件仍在上传
用户填写表单= false ---上传的文件会保留在临时文件夹中,因为它们尚未处理完毕。
第4部分
服务器端保管。如果从当前日期开始超过x天数,则每天检查一次临时文件夹,并删除它们以节省空间。可以在任何平台上使用shell脚本完成
如果您担心未处理的文件在服务器上闲置多长时间,请更改上述逻辑。例如,每小时运行房屋并检查临时文件夹的年龄是否> <6小时或其他
如果用户现在上传文件,并且在6小时内填写表单,然后在服务器端,您可以向客户报告,说明文件已被删除,他们需要再次上传文件。但这一切都取决于空间是否有问题。
你可以在5小时后自动打开一个弹出窗口,说明上传的文件很快就会被删除,因为它们还没有填写表格。