新的廣告系統,
采用客戶端直接上傳到阿里雲,阿里雲異步調用服務器的模式(Browser.js)
參考地址:https://www.alibabacloud.com/help/zh/doc-detail/32069.htm?spm=a2c63.p38356.b99.702.5d66219fMXc1Ka
流程示意:
碰到問題:
上傳圖片提示The callback var is not expecten json
sts訪問口令與參數配置都正確
刪除上傳的callback參數也可以上傳成功,但是加上此參數就失敗。
原因:
是因為callback里的傳遞參數必須是字符串類型,如果是int類型就會產生此問題。
別看原因簡單,排查起來可是費了一番功夫。官方文檔里暫時也沒有看到對此的描述,只有如圖下的一個demo
解決方法
let data_param = {
uid : admin_info.uid, //后台操作uid
app_name: app_name, //業務模塊
app_table: app_table, //業務對應的表名
attach_type: attach_type, //附件類型,1圖片,2視頻
filename: file_name, //文件名稱
filesize: file_size, //文件大小
file_type: file_type, //文件類型
file_ext: file_ext, //文件文件后綴
save_name: save_name, //阿里雲的保存名稱
save_path: save_path, //阿里雲的保存路徑
all_path : all_path, //阿里雲全路徑
is_video_banner: ''+is_video_banner, //是否視屏封面的圖片存儲
};
//all_path表示上傳的object name , file表示上傳的文件
client.multipartUpload(all_path, file, {
progress: async function (p, checkpoint) {
tempCheckpoint = checkpoint;
},
parallel: options.parallel ? options.parallel : 1,
partSize: options.partSize ? options.partSize : 102400,
checkpoint: tempCheckpoint,
mime: file_mime,
callback: {
url: setter.callback_api_url + '/admin/CommonOss/callbackFile',
body: 'bucket=${bucket}&object=${object}&imageInfo.height=${imageInfo.height}&imageInfo.width=${imageInfo.width}¶m=${x:param}',
contentType: 'application/x-www-form-urlencoded',
customValue:{
'param': JSON.stringify(data_param)
}
},
})
本質就是json化,這樣的好處一是規避了上邊報錯問題,二是以后添加參數的時候,不用body里也配置了,省工。
author:hann