记笔记,免忘记!
真是哪里都需要上传,首先感谢网上的各位大佬的分享!
首先根据微信js-sdk说明文档 将相关准备工作做好。
//引用相关js
<script src="../js/jquery-2.1.4.min.js"></script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
因为要兼容微信和浏览器上传
//判断是否微信
var ua = navigator.userAgent.toLowerCase(),app = navigator.appVersion;
var isWeixin = ua.indexOf('micromessenger') != -1;
var isAndroid = ua.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //Android
var isIOS = !!ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
单图上传:【多图类似】
if(isWeixin){
//微信上传
$(document).on("click",".container",function () {
var self = this;
wxUploadOneimg($(self).find("img"),'{$uptoken}');
});
}else {
//七牛上传
Qiniu();
});
//微信单图上传 img 图片 uptoken
function wxUploadOneimg(img,uptoken) {
wx.chooseImage({
count: 1, // 单词最多选几张图片
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) { //选择图片成功
$.showLoading();
//成功后开始上传图片
wx.getLocalImgData({ //获取图片base64
localId: res.localIds[0], // 图片的localID
success: function (res) {
var localData = '';
if (window.__wxjs_is_wkwebview) { // 如果是IOS,需要去掉前缀
localData = res.localData.replace(/^.*?base64,/, '');
}else {
localData = res.localData;
}
var str = '0123456789abcdefghijklmnopqrstuvwxyz',
n = str.length,
key = "",
i = 1;
while (i < n) {
var a = Math.floor(n * Math.random());
key += str.charAt(a);
i++;
}
$.ajax({
headers: {
"Content-Type" : "application/octet-stream" ,
"Authorization" : "UpToken "+ uptoken
},
url : "https://upload.qiniup.com/putb64/-1/key/" + Qiniu.URLSafeBase64Encode('yourname/' + key + '.png'),
type : "post",
dataType: "json",
data : localData,
success : function (result) {
img.data("key", result.key);
img.attr("src",'https://qiniu.域名.com/'+result.key);
img.parents(".pick").attr("data-key",result.key);
},
error: function () {
$.toast("上传失败", "forbidden");
}
});
$.hideLoading();
}
});
}
});
}