天天看點

oss上傳報錯_layui+oss阿裡雲附件上傳回調報錯問題

新的廣告系統,

采用用戶端直接上傳到阿裡雲,阿裡雲異步調用伺服器的模式(Browser.js)

參考位址:https://www.alibabacloud.com/help/zh/doc-detail/32069.htm?spm=a2c63.p38356.b99.702.5d66219fMXc1Ka

流程示意:

oss上傳報錯_layui+oss阿裡雲附件上傳回調報錯問題

碰到問題:

上傳圖檔提示The callback var is not expecten json

sts通路密碼與參數配置都正确

删除上傳的callback參數也可以上傳成功,但是加上此參數就失敗。

原因:

是因為callback裡的傳遞參數必須是字元串類型,如果是int類型就會産生此問題。

别看原因簡單,排查起來可是費了一番功夫。官方文檔裡暫時也沒有看到對此的描述,隻有如圖下的一個demo

oss上傳報錯_layui+oss阿裡雲附件上傳回調報錯問題

解決方法

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}&param=${x:param}',

contentType: 'application/x-www-form-urlencoded',

customValue:{

'param': JSON.stringify(data_param)

}

},

})

本質就是json化,這樣的好處一是規避了上邊報錯問題,二是以後添加參數的時候,不用body裡也配置了,省工。

author:hann