关于图片上传的疑问,该选一张传一张还是提交一起传?

2020-07-17 16:18:08 +08:00
 Lindp

请问大家在做含有图片这种业务的时候,图片是在选择完成后上传吗?我想了两种方案

1.选择完图片就上传,最终提交图片路径参数。该方案存在垃圾数据 2.选择完图片暂存,提交的时候图片、请求参数一起提交,后台处理返回

请问大家通常是如何处理,公司上 OSS 所以这块想正规下,我们是做电商的

还有 OSS 现在也没有批量上传的功能,大家都是自己写多线程还是循环传?

4417 次点击
所在节点    程序员
36 条回复
Mystery0
2020-07-17 23:43:08 +08:00
@Lindp 我司的就是上传和保存分开,上传成功之后返回资源 id,保存的时候提交资源 id,后端确认资源使用,然后另跑一个服务定期删除未确认使用的资源
lxml
2020-07-17 23:55:29 +08:00
当然是 1,其实都不用怎么去做删除,硬盘不值钱,流量值钱,做好监控别被人当图链用就好了
szdubinbin
2020-07-18 00:11:26 +08:00
其实批量一次过传是最科学的,如果一张一张,那用户感觉前面有张不好,那还得做个换或者删掉的交互,麻烦。
目前 cos 是循环去伪装批量。
https://juejin.im/post/5dff8a26e51d4558105420ed

我今天看到这个,感觉很多东西不错,续点续传,分片上传,控制并发,可以参考一些操作。
lagoon
2020-07-18 00:17:48 +08:00
啊?发现更多人选了选完就传。

但,选一张转个圈体验太不友好了吧。
不转圈,用户以为传完退出也挺麻烦。

而且从界面展示来看,给用户的感觉是选只是选,最终的传是点击发布完成的(如果界面是类似朋友圈的那种交互)。
我觉得选了就传,从道德上来说也微妙吧。

虽然这年头的开发基本已经不讲道德了。
aloyuu
2020-07-18 09:46:24 +08:00
@Lindp 图片表,1 入库,2 上传,3update,4 返回 id


内容表,提交后关联 id
aloyuu
2020-07-18 09:48:13 +08:00
不好意思圈错了


4 返回图片信息,不是 id
aloyuu
2020-07-18 09:48:59 +08:00
key
lovecy
2020-07-18 10:15:58 +08:00
@lagoon 可以有个队列,选完就加入队列,最终用户点确定时,再根据队列里未上传的给上传进度显示。不过这个隐私道德也是一方面,不讲道德或是不怕被人扒出来就无所谓
skypyb
2020-07-18 12:39:57 +08:00
肯定是 1, 真怕垃圾数据, 可以代码里做可达性分析然后 GC
KingPL
2020-07-18 13:25:54 +08:00
可以传完文件,一个文件一条记录,返回 ids ;表单提交文件 id 上来,再把文件记录对应 id 的业务类型、绑定的 id 更新就好了,设置清理无用文件规则;里面还需要些鉴权手段
Lindp
2020-07-18 13:43:37 +08:00
@ChefIsAwesome
@frandy
@Mystery0
@lxml
@szdubinbin
@lagoon
@skypyb
@KingPL

感谢大家,认真听取了各方面的意见,我还是采用方案 1 吧
MarioLuo
2020-07-18 13:46:05 +08:00
感觉有两种方式,1.伪批量提交,用户点击表单前调用额外的上传接口上传图片,成功后再提交表单,可以减少垃圾图片数量,2.在图片上传接口记录上传图片信息,
MarioLuo
2020-07-18 13:50:55 +08:00
包括(id, url, status, creatTime), 并返回 id+url, 表单上传根据图片 id+url 修改图片信息状态,可根据该图片表清除垃圾数据,人工或定时程序
pinews
2020-07-18 15:24:22 +08:00
微博上传图片,根本就不关心你是谁上传的。
hallDrawnel
2020-07-18 17:15:54 +08:00
垃圾数据应该可以不管,储存压力大的话可以定期 GC 。
realpg
2020-07-18 22:01:51 +08:00
第三方存储上传的话 方案 1

webserver 本机存储的话 方案 1 和方案 2 看情况

如果是编辑器类上传,上传了可能没用的话,或者盗窃你资源当图床的话,在上传时候加上相关参数,在哪个资源下上传的,然后同时在编辑器内容存档后 进行一次遍历引用了多少资源做记录

这样方便清理和后续整理。

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

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

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

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

© 2021 V2EX