最近的项目中需要用到对接oss,网上的文档太少,插件商城里面也是不清不楚的,特别是下载了以后还在安卓里面用不了,不过又是一段时间的折腾之后,问题解决了,所以就可以在这里水一篇教程了。其实原理来说还是蛮简单的,就是需要用到插件商城里的插件,然后还要对其中的一段js进行注释才可以解决全部问题。
教程开始:
1.去阿里云创建一个存储桶,然后在RAM访问控制中添加人员,并赋予oss管理权限。
在上图可以看到访问控制 RAM,点击进入后创建一个用户
完成上述步骤之后,就可以生成用户 AccessKey,这就是关系到app内能否进行图片上传的关键。
将生成的AccessKey保存好,然后就是后面的步骤了
2.给项目安装阿里云oss文件直传-无需后台签名这个插件,引入到项目需要用到文件上传的页面中。
import uploadImage from '../../js_sdk/yushijie-ossutil/ossutil/uploadFile.js';
引入之后,配置oss的config.js文件,设置刚才获取的信息
注意,此插件还需要进行一个修改,就是crypto.js的106行左右,注释下面这行代码
,否则安卓端插件会不可用。
if (typeof btoa == "function") return btoa(util.bytesToString(bytes));
3.开始使用插件进行图片上传
uploadOss(){
uni.chooseImage({
count: 1, // 默认最多一次选择9张图
//sourceType: ['camera'], // 可以指定来源是相册还是相机,默认二者都有
success: res=> {
// 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
var tempFilePaths = res.tempFilePaths;
//支持多图上传
for (var i = 0; i < res.tempFilePaths.length; i++) {
//显示消息提示框
uni.showLoading({
mask: true
})
uploadImage(res.tempFilePaths[i], 'images/',
result => {
console.log(JSON.stringify(result));
uni.hideLoading();
//成功之后,可以将result带去执行其它方法或者赋值
},result =>{
//这里写上传失败的代码
console.log(JSON.stringify(result));
})
}
}
})
},
以上是选择并上传图片的主要方法,如果成功,那么result 就会返回图片的地址。
效果如下(这是最近的聊天app项目):
教程到此结束
本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.ruletree.club/archives/2114/