微信小程序图片直传OBS对象存储指南
【摘要】 背景 微信小程序作为近两年腾讯退出的应用平台,具有广泛的应用场景。那么在此过程中,部分客户基于小程序进行一些数据存储和提交的程序设计和开发。本文就通过一个上传图片的小例子来说明如何和OBS对接开发。步骤一:设置Bucket的跨越访问 因为小程序是基于HTML+JS基础框架,在安全上继承浏览器的跨越访问安全要求。那么就需要预先在需要上传数据的桶上配置允许跨越访问具体设置可以参考下图...
背景
微信小程序作为近两年腾讯退出的应用平台,具有广泛的应用场景。那么在此过程中,部分客户基于小程序进行一些数据存储和提交的程序设计和开发。本文就通过一个上传图片的小例子来说明如何和OBS对接开发。
步骤一:设置Bucket的跨越访问
因为小程序是基于HTML+JS基础框架,在安全上继承浏览器的跨越访问安全要求。那么就需要预先在需要上传数据的桶上配置允许跨越访问
具体设置可以参考下图:
步骤 二:配置桶访问域名到小程序的上传域名白名单中
微信小程序对于跨越访问的域名采用白名单管理机制,因此,对于需要上传的数据,需要预先设置好允许的白名单。桶的域名可以在控制台 桶--->概览地方获取
登录微信小程序平台,然后配置域名白名单
步骤三:微信小程序图片上传技术框架
步骤四:微信小程序上传图片代码参考(整体工程参考附件内容):
代码有参考和使用 https://www.jianshu.com/p/c1e0574ee63d 中部分代码,特此说明。
//选择图片
choiceimage: function(){
var that = this;
console.log("选择图片");
wx.chooseImage({
success: function(res) {
const imagexs =that.data.tempImagePath.concat(res.tempFilePaths);
that.setData({
tempImagePath: imagexs.length <= 5 ? imagexs : imagexs.slice(0,5)
})
// that.data.tempImagePath= imagexs.length <= 5 ? imagexs : imagexs.slice(0, 5)
// this.tempImagePath=res.tempFilePaths;
// tempImagePath : res.tempFilePaths;
console.log("选择图片成功",that.data.tempImagePath);
$digest(this)
// return tempImagePath
},
fail:function(e) {
console.log(e);
// return null
}
})
},
//上传图片
uploadfile: function(){
var that=this;
console.log("上传图片");
if (this.tempImagePath != '') {
console.log("上传图片if");
var tempImagePaths = that.data.tempImagePath;
console.log("上传图片if2", tempImagePaths[0]);
// this.tempImagePath = choiceimage();
for (var i in tempImagePaths) {
console.log("开始上传图片");
var filenames = that.getfilename();
var tokens = that.data.token;
console.log(tokens);
console.log("file name is ",filenames);
that.data.loading=true;
wx.uploadFile({
url: that.data.endpoint,
// method: 'POST',
filePath: tempImagePaths[0],
name: filenames,
header:{
'content-type': 'multipart/form-data; boundary=-9431149156168'
},
formData:{
'key': filenames,
'token': tokens,
// 'name': tempImagePaths[i],
'content-type': 'image/jpeg',
'success_action_status': '200'
},
success(res){
console.log(res.statusCode);
if (res.statusCode == '200'){
console.log(res.data);
wx.showToast({
title: 'upload success',
icon: 'success'
});
// wx.hideToast();
}else{
console.log("upload failed messages",res.statusCode, res.data);
wx.showToast({
title: 'upload Failed',
});
}
},
fail(e){
console.log(e)
}
})
}
} else{
console.log("无图片上传")
}
},
getfilename: function() {
var prefix ="OBS_WX_s/";
var date = Date.now() ;
console.log(prefix + date);
return prefix+date;
},
//从服务端获取token
gettoken: function() {
var that=this;
wx.request({
url: that.data.tokenurl,
method: 'GET',
// header: {
// 'content-type': 'text/plain'
// },
success(res){
console.log("获取鉴权token");
// console.log(res.data);
that.setData({
token: res.data,
});
console.log(that.data.token);
// return res.data
},
fail(e){
console.log(e)
}
})
},
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
liuys2020/08/28 00:30:251楼编辑删除举报
舰长1232021/01/15 06:04:08编辑删除举报
懵懂的小白菜2021/05/17 12:23:57编辑删除举报
进击的白菜2020/08/31 08:19:512楼编辑删除举报
但上传时报错403 报错信息:Invalid according to Policy: Extra input fields: content-type
我应该怎么设置呢
ghlala2020/12/17 08:11:433楼编辑删除举报
唯你2021/12/12 13:49:334楼编辑删除举报
at success (index. js?_[ sm]:45)
您好,请问这里出了什么问题
yd_2223318902023/09/21 06:14:275楼编辑删除举报