uniapp上传oss阿里云的方法和一些需要注意的问题
使用uni.chooseImage选择图片获取图片数据,这里就不写这个了,网上应该有很多,拿到图片数据和后端返回的数据后,做如下操作。
·
使用uni.chooseImage选择图片获取图片数据,这里就不写这个了,网上应该有很多,拿到图片数据和后端返回的数据后,做如下操作
//file就是上传图片成功拿到的数据,ossData是后端返回的签名等oss数据
async OssLoad(file,ossData){
this.uuid()
const filename =file.name;
// console.log(data)
let formData = new FormData();
//注意formData里append添加的键的大小写
uni.uploadFile({
url: ossData.host, //后台给的阿里云存储给的上传地址
filePath: this.img,
name: 'file',
formData: {
key: ossData.dir+this.uuId+file.name, //文件名
policy: ossData.policy, //后台获取超时时间
OSSAccessKeyId: ossData.accessKeyId, //后台获取临时ID
success_action_status: '200', //让服务端返回200,不然,默认会返回204
signature: ossData.signature ,//后台获取签名
host:ossData.host
},
success: (res) => {
this.create(ossData,ossData.dir+this.uuId+file.name)
},
fail: (err) => {
uni.hideLoading();
uni.showModal({
title: '上传失败',
content: err.errMsg,
showCancel: false
});
},
complete:(com) => {
console.log(com)
}
});
},
一些容易踩坑的点
- 首先这个请求肯定会跨域,所以需要配置跨域
- 其次文件名最好加上唯一标识,时间戳或者uuid等,防止用户图片名重复发生覆盖
- 文件名必须经过拼接,写成ossData.dir+this.uuId+file.name这种,而不是直接写file.name。不然会报错403
更多推荐
已为社区贡献3条内容
所有评论(0)