多图上传对接阿里云oss api

提问 未结 14 284
happy地瓜
悬赏:20飞吻
如下 key放到data中或者before中或者done中,都是固定的,并不会每次上传更改一次,有没有好的解决方案。。多个文件,多个key
var upins = upload.render({
elem: '#test-upload-more',
url: '.aliyuncs.com',
multiple: true,
data: {
key: function(){
let timeis=Date.parse(new Date());
let letter=Math.random().toString(36).substr(2);
upins.config.data.key="a/"+timeis+letter+".jpg"
return upins.config.data.key
}
},
before: function(obj) {
var policy;
admin.req({
url: './api/upload/policy',
data: {

},
async: false,
done: function(res) {

upins.config.data.policy = res.data.policy;
upins.config.data.OSSAccessKeyId = res.data.accessid,
upins.config.data.Signature = res.data.signature,
upins.config.data.callback = res.data.callback,
upins.config.data.success_action_status = '200'
}

});




obj.preview(function(index, file, result) {
//console.log(index+file+result)
$('#test-upload-more-list').append('<img src="' + result + '" alt="' + file.name +
'" class="layui-upload-img">')
});


},
done: function(res) {
//上传完毕
if (res.Status == 'Ok') {
console.log(upins.config.data.key)
let key = upins.config.data.key
if (uplist) {
uplist = uplist + ',' + key
} else {
uplist = key;
}
console.log(uplist)
}
}
});
回帖
  • 0 回复
  • @happy地瓜 主要是你data里面的key的设置太诡异了,有点作死的意思,本身支持设置成方法,然后在方法里面返回你要的动态的数据,为的就是让你在提交的时候检测到时一个方法就给你执行一下取到返回的值为准,但是你却利用这个方法去将他的key给重新设置成一个普通的字符串,想象一下执行一次之后这个config的data的key就变成一个普通的字符串了而不是一个方法了,多以多图的话提交多次就变味了,有点画蛇添足了正常本身就是很简单的直接return回去一个值就好,
    key: function(){
    let timeis=Date.parse(new Date());
    let letter=Math.random().toString(36).substr(2);
    return "a/"+timeis+letter+".jpg";
    }
    0 回复
  • 把简单的事情搞复杂了
    0 回复
  • @岁月小偷 多谢
    0 回复
  • @HiTerry 谢谢
    0 回复
  • @HiTerry [汗] 可否顺便告诉我一下,我应该如何在done里取得这个key的值。。。。
    0 回复
  • @岁月小偷 [汗] 可否顺便告诉我一下,我应该如何在done里取得这个key的值。。。。
    0 回复
  • @happy地瓜 这个估计没啥办法,因为data设置的是一个方法,进入done回调的时候this虽然就是这个config,但是它的data.key依旧只是一个方法,但是你要获得的是他当时执行之后返回的值,这个应该实现不了;可以试试让后台把这个信息给你返回,要可以换一种实现的方式,就是data不要设置成方法的形式,然后在before回调里面去修改this.data.key = value;在done回调的时候自然也可以通过this.data.key取到
    0 回复
  • @岁月小偷 只能去看一下阿里云oss的callback了,before回调里只执行一次,key是不变化的
    0 回复
  • @happy地瓜 大神看看有没有其他方法能够传一个动态的key,在done中能取到的,而且需要每个文件一个单独的key。。。阿里云post object也不支持返回文件名。。。。
    0 回复