OSS文件服务端签名上传回调

背景

1、由于文件直接通过服务器再到文件存储服务会验证影响到服务的性能,要是存在大批量文件的行为,可能会直接拖垮服务;目前我们使用OSS文件存储服务,OSS文件存储支持上传回调,这样会减少服务器压力和网络带宽;
 2、采用服务端签名后直传方案有个问题:大多数情况下,用户上传数据后,应用服务器需要知道用户上传了哪些文件以及文件名;如果上传了图片,还需要知道图片的大小等。

解决思路

使用OSS官网介绍方案,利用OSS官网的对应语言的操作示例,来实现我们需要的方案

方案介绍

详细流程

image.png

1、流程如下:
用户向应用服务器请求上传Policy和回调。
应用服务器返回上传Policy和回调设置。
用户直接向OSS发送文件上传请求。
OSS根据用户的回调设置,发送回调请求给应用服务器。
应用服务器返回响应给OSS。
OSS将应用服务器返回的内容返回给用户。

policy封装(类似token的权限校验+需要的参数)

2、内容解析如下:

CallbackUrl:OSS往这个服务器发送的URL请求。
callbackHost:OSS发送这个请求时,请求头部所带的Host头。
callbackBody:OSS请求时,发送给应用服务器的内容,可以包括文件的名称、大小、类型。如果是图片,可以是图片的高度、宽度。
callbackBodyType:请求发送的Content-Type。

3、客户端/web上传
 客户端/web上传图片,是根据返回的policy信息,把对应的图片文件上传到服务器,上传后会有个回调地址,从服务端返回,客户端可以根据返回内容判断是否上传成功。
 在客户端源码upload.js文件中,callbackbody的值是步骤2中应用服务器返回给客户端消息body中callback的内容。如下代码是官网例子:

new_multipart_params = {
     'key' : key + '${filename}',
     'policy': policyBase64,
     'OSSAccessKeyId': accessid,
     'success_action_status' : '200', //让服务端返回200,不设置则默认返回204
     'callback':  callbackbody,
     'signature': signature,
 };

遇到的问题

1、由于对接的图片加密上传有web端、JAVA、python、c++等一些服务,有c++的对接的同事反应会存在一些问题,改成python进行封装。由于对接服务语言较多,参考OSS官网会没有封装成SDK进行处理,会有有一些语言的操作示例,需要根据官网进行对接。
 2、之前上传图片存在几万或者几十万张的级别上传的情况下,有反馈请求反应太慢,后面排查是客户端进行多线程操作,把带宽拉满,导致部分图片上传失败,建议对接注意该问题,防止文件丢失。

总结

参考OSS的设计,避免了很多不必要的性能,还增加一些流程的闭环;在以后设计一些中间件和业务代码的过程中可以借鉴类似方式;

参考文章:https://help.aliyun.com/document_detail/31927.html?spm=a2c4g.11186623.6.1372.11174367XkuM4R

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容