在用户填写表单时上传文件

我正在创build一个表单,用户可以发布包含照片的广告。 访问此表格之前,用户不需要login/注册。 当用户填写表单时,我需要asynchronous上传照片。 (例如,gumtree.com.au可让您在制作新广告时上传照片)

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

什么是典型的devise模式才能正确实现?

这是一种方法

第1部分

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

可以轻松地在客户端使用一些javascript和ajax来实现

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

第2部分

用户上传文件并将其asynchronous发送到此临时文件夹

第3部分

用户填写form = true —执行操作,例如处理表单和图像,将它们从临时文件夹中移出。 临时文件夹现在是空的。 它可以用于下一批的上传,如果你想要的function。 只要文件仍在上传,您可以等待上传成功callback

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

第4部分

服务器端的房子保持。 如果超过当前date的x天,则检查一次临时文件夹一次,并删除它们以节省空间。 可以在任何平台上使用shell脚本完成

如果您担心未处理的文件在服务器上保留多久,请更改上述逻辑。 例如每隔一小时运行一次,并检查临时文件夹年龄是否> 6小时或其他

在不太可能的情况下,用户现在上载文件,并在6小时内填写表单,然后在服务器端,您可以向客户报告文件已被删除,他们需要重新上传。 但是这一切都取决于空间是否是一个问题。

您可以在5个小时后自动打开一个popup窗口,说上传的文件将会被删除,因为他们还没有填写表单。