layui+oss阿里云附件上传回调报错问题

新的广告系统,

采用客户端直接上传到阿里云,阿里云异步调用服务器的模式(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}&param=${x:param}',
contentType: 'application/x-www-form-urlencoded',
customValue:{
'param': JSON.stringify(data_param)
}
},
})

本质就是json化,这样的好处一是规避了上边报错问题,二是以后添加参数的时候,不用body里也配置了,省工。
author:hann
posted @ 2020-04-01 10:26  WidgetBox  阅读(1030)  评论(0编辑  收藏  举报