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