个人倾向于在后端做,毕竟 sdk 体积过大,但是又会增加至少 2 倍响应时间
1
34C 2018-08-09 02:17:29 +08:00
又拍云有 form api 直接在前端上传,和 sdk 没关系。
搜了一下 OSS 的文档,也有直接前端上传的接口: https://help.aliyun.com/document_detail/31988.html |
2
sker101 2018-08-09 02:51:05 +08:00
各有各的好处 看你们的业务和存储结构
前端的好处不只是你说的一倍响应 还有大部分云存储提供的 SDK 都已经帮你把诸如上传百分比的东西写好了 前端直接用就好了 但是前端的话密钥之类的还是需要后端加密处理一下 后端的话我觉得主要看你们有没有存储那些图片的需求 比如我公司是在上传之后把图片再存储到我们自己的表上 每个图片不只是有云存储那边的 key 还有自己的 ID 如果用前端的话需要预生成并且插入相应图片 ID 返回给前端再上传 不太好判断用户有没有上传成功 成功后也要再发送成功请求将图片的状态更新成成功 但是后端也有问题比如如果不是你公司的服务器 是个人的 一般上传带宽都很小 那么用户上传因为对于服务器来说是下载速度很快 但是服务器要再传到云存储就很慢了 电脑端还好说 手机端选的图片通常都是原图 除非你后台服务器加工压缩一下 不然你要个 1M 的小水管那就等着一张图片上传个五六分钟吧 当然后台压缩也得花时间 |
3
leafiy OP |
4
qiayue 2018-08-09 06:28:13 +08:00
提前生成,举个例子,发帖的场景,用户点进发帖页面,先当做所有人都会传图片,先把 policy 生成好放在那里,等到用户真正要上传的时候,就可以直接使用,如果用户不用,浪费了也就浪费了
|
5
ywgx 2018-08-09 07:56:33 +08:00 via Android
前端发起上传走公网
后端发起上传可以走内网 |
6
play78 2018-08-09 08:47:22 +08:00
正好,我搭车问个问题哈。 就是 OSS 提供的无论是 SDK,还是 STS 的 Policy 直接上传到 OSS。
如果直传到 OSS,我服务器能限制上传的总大小吗? 现在我用 STS 生成一个密钥给客户端上传,目前只能限制前缀的部分信息。但是无法限制上传大小。客户可以任意上传,只要在有效期内,基本无限上传。 各位在实际应用中有遇到吗? |
7
rogwan 2018-08-09 08:54:19 +08:00 via Android
前端上传,对用户上传内容的管理控制力弱,后端上传则控制力强很多。比如简单的图床类型,那就前端直接传简单;如果需要对图片类型大小进行处理编辑删除这些,那就后端处理,可以提高可靠性,不用等回调信息,回调也可能失败。
|
8
rogwan 2018-08-09 09:00:38 +08:00 via Android
@play78 前端校验+后端根据回调再判断,大了就删掉。服务器没拿到回调数据没法提前知道文件大小吧,是否用有其他的方法?
|
10
leafiy OP @play78 sdk 直传的话,肯定要在提交之前加一步验证吧。policy 的话,可以从前端获取文件信息传到后端,根据这个信息生成 policy,这时候就可以限制大小了啊
|
12
34C 2018-08-09 12:44:29 +08:00 via iPhone
@leafiy 一来一回 200ms 也比用户传文件到你服务器上快啊,何况服务器带宽资源不要紧的啊?从服务器再传到 OSS 又占用一次带宽,大概是你业务量还没大到让你知道带宽有多重要。楼上也说了,加载页面的时候直接给 policy 省去你那 200ms
|
13
also24 2018-08-09 12:47:09 +08:00
[项目上传者都在海外] 怎么感觉优化服务器位置或线路才是正途……
|
14
leafiy OP |