Web 前后端文件交互的问题

2015-10-27 10:34:25 +08:00
 cc7756789

我看大多数网站, 上传文件, 都会有刷新状态, 这是不是说明文件在信息发布之前就已经上传到后端了?
那么如果不和普通的表单数据一起传给同一个后端路由存储的话, 单独的文件数据用什么变量记录文件名, 再和未上传的信息关联呢? 这时候如果表单数据和文件没有同时处理, HTTP 连接可能已经结束了. 变量什么的也销毁了.

2473 次点击
所在节点    程序员
6 条回复
adexbn
2015-10-27 10:43:06 +08:00
其实你可以前端生成文件名
refresh
2015-10-27 10:44:14 +08:00
1. 文件保存到一个临时目录,上传后给客户端返回文件名(uuid)
2. 如果用户发布贴子,后台得到此文件名,复制此文件到正式目录
3. 如果用户没发布贴子,临时目录会按日期定时清除
cc7756789
2015-10-27 10:49:22 +08:00
@refresh 多谢
dong3580
2015-10-27 10:54:42 +08:00
做个服务器,定时扫文件对比数据库。
然而如果不是特殊文件,例如视频之类的,硬盘空间占用不了多少,一般放弃信息发布也不做删除。
况且你不能保证对方是程序出错退出,直接关闭浏览器放弃发布等等之类的...维护起来也麻烦。
TingHaiJamiE
2015-10-27 11:26:03 +08:00
我觉得如果是存了文件不入数据库,那么就不用删除。
硬盘又不值钱。
domty
2015-10-27 11:57:29 +08:00
一个不太彻底的解决办法。
我都是把类似上传后的服务器路径存在 session 里的, key 按实际业务确定。
保存表单数据的时候把它从 session 中取出来,保存成功后从 session 清空。
每次往 session 存之前先检查原来的该 key 对应的 value 是否有值,有就取出路径删掉。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/231354

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX