我看大多数网站, 上传文件, 都会有刷新状态, 这是不是说明文件在信息发布之前就已经上传到后端了?
那么如果不和普通的表单数据一起传给同一个后端路由存储的话, 单独的文件数据用什么变量记录文件名, 再和未上传的信息关联呢? 这时候如果表单数据和文件没有同时处理, HTTP 连接可能已经结束了. 变量什么的也销毁了.
1
adexbn 2015-10-27 10:43:06 +08:00 via iPhone
其实你可以前端生成文件名
|
2
refresh 2015-10-27 10:44:14 +08:00 1
1. 文件保存到一个临时目录,上传后给客户端返回文件名(uuid)
2. 如果用户发布贴子,后台得到此文件名,复制此文件到正式目录 3. 如果用户没发布贴子,临时目录会按日期定时清除 |
4
dong3580 2015-10-27 10:54:42 +08:00
做个服务器,定时扫文件对比数据库。
然而如果不是特殊文件,例如视频之类的,硬盘空间占用不了多少,一般放弃信息发布也不做删除。 况且你不能保证对方是程序出错退出,直接关闭浏览器放弃发布等等之类的...维护起来也麻烦。 |
5
TingHaiJamiE 2015-10-27 11:26:03 +08:00
我觉得如果是存了文件不入数据库,那么就不用删除。
硬盘又不值钱。 |
6
domty 2015-10-27 11:57:29 +08:00
一个不太彻底的解决办法。
我都是把类似上传后的服务器路径存在 session 里的, key 按实际业务确定。 保存表单数据的时候把它从 session 中取出来,保存成功后从 session 清空。 每次往 session 存之前先检查原来的该 key 对应的 value 是否有值,有就取出路径删掉。 |