微信小程序图片直传OBS对象存储指南

举报
shan0304 发表于 2019/07/03 15:13:08 2019/07/03
【摘要】 背景 微信小程序作为近两年腾讯退出的应用平台,具有广泛的应用场景。那么在此过程中,部分客户基于小程序进行一些数据存储和提交的程序设计和开发。本文就通过一个上传图片的小例子来说明如何和OBS对接开发。步骤一:设置Bucket的跨越访问 因为小程序是基于HTML+JS基础框架,在安全上继承浏览器的跨越访问安全要求。那么就需要预先在需要上传数据的桶上配置允许跨越访问具体设置可以参考下图...

背景

     微信小程序作为近两年腾讯退出的应用平台,具有广泛的应用场景。那么在此过程中,部分客户基于小程序进行一些数据存储和提交的程序设计和开发。本文就通过一个上传图片的小例子来说明如何和OBS对接开发。

步骤一:设置Bucket的跨越访问

   因为小程序是基于HTML+JS基础框架,在安全上继承浏览器的跨越访问安全要求。那么就需要预先在需要上传数据的桶上配置允许跨越访问

具体设置可以参考下图:

image.png

步骤 二:配置桶访问域名到小程序的上传域名白名单中

  微信小程序对于跨越访问的域名采用白名单管理机制,因此,对于需要上传的数据,需要预先设置好允许的白名单。桶的域名可以在控制台 桶--->概览地方获取

image.png

登录微信小程序平台,然后配置域名白名单 

image.png


步骤三:微信小程序图片上传技术框架


image.png


步骤四:微信小程序上传图片代码参考(整体工程参考附件内容):

代码有参考和使用 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
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。