新的廣告系統,
采用用戶端直接上傳到阿裡雲,阿裡雲異步調用伺服器的模式(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