一.原因

  在微信通过电脑版和浏览器登录时,调用了微信上传的接口,wx.getLocalImgData或返回失败。

  没办法,只有处理当电脑上传时,使用ajaxuploadfile上传。

二.方法

function upload_weixin_pic(e) {
e=e||{};
e={
id:e.id||'get_pic_url',
hight:e.hight||0,
width:e.width||0,
chooseImage:function () {
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有
success: function (res) {
e.getLocalImgData(res);
}, fail: function () {
//layer.alert("选择图片失败", {icon: 2, time: 3000, title: "失败"});
openTheFile(e);
}, cancel: function (res) {
}
})
}, getLocalImgData:function (res) {
layer.msg('上传中', {icon: 16, shade: 0.3, time: 99990000});
wx.getLocalImgData({
localId: res.localIds[0], // 图片的localID
success: function (res) {
e.getBase64(res);
}, fail: function (v) {
layer.closeAll();
/*if(v.errMsg.indexOf('getLocalImgData')>-1){
openTheFile(e);
}else{
console.info(e);
layer.alert("下载图片失败", {icon: 2, time: 3000, title: "失败"});
}*/
openTheFile(e);
}, complete: function (res) { }
});
}, getBase64:function (res) {
$.post("/Public/weixin_base64", {base64: res.localData,hight:e.hight,width:e.width}, function (path) {
layer.closeAll();
e.success(path);
})
}, success:e.success|| function (path) {
//path
}
} if(isMobile()){
e.chooseImage();
}else{
openTheFile(e);
}
}
var previewImages_e={};
function openTheFile(e) {
if($("#"+e.id).length == 0){
var input=$('<input type="file" style="display: none" name="'+e.id+'" id="'+e.id+'" >');
input.attr("onchange",'previewImages()');
$("body").append(input);
}
previewImages_e=e;
$("#"+e.id).click();
}
function previewImages() {
var e=previewImages_e||{};
var lay = layer.msg('上传中', {icon: 16, shade: 0.3, time: 99990000});
$.ajaxFileUpload({
url: "/Public/UploadPic",
secureuri: false,
fileElementId: e.id,
type: "post",
data:{
hight:e.hight,
width:e.width
},
dataType: "json",
async: false,
success: function (data, status) {
layer.close(lay)
if (data.code == 0) {
e.success(data.url)
} else {
layer.alert(data.msg, {icon: 2})
}
},
error: function (data, status, e) {
layer.close(lay);
console.info(e)
layer.alert("上传图片异常,请选择新的图片!")
}
})
}

三.调用方法

  这个方法我使用了layui、ajaxfileupload插件

  调用时

  可以直接调用方法名

upload_weixin_pic()

//也可以

      upload_weixin_pic({
success:function (path) {
//path
}
})

最新文章

  1. 分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节
  2. 学习SpringMVC——你们要的REST风格的CRUD来了
  3. CAD的输出成高清jpg图片
  4. 【Bugly技术干货】那些年我们用过的显示性能指标
  5. 保存字符串到手机SDcard为txt文件
  6. Memcached缓存在.Net 中的使用(memcacheddotnet)
  7. 详解Bootstrap面板组件
  8. SharePoint 2013 列表多表联合查询
  9. nhibernate操作sql2008数据库(添加数据失败)
  10. Apache Spark GraphX的特点
  11. JavaScript 获取Select标签选中的项
  12. Postfix+Amavisd-new+Spamassassin+ClamAV整合安装
  13. skynet源代码学习 - logger工程和服务
  14. C# 使用Parallel并行开发Parallel.For、Parallel.Foreach实例
  15. linux API函数大全
  16. 从头开始基于Maven搭建SpringMVC+Mybatis项目(1)
  17. 初学Python:面向对象总结
  18. windows清空电脑的DNS缓存
  19. cad.net 更改高版本填充交互方式为低版本样子
  20. 2017-2018-1 20155312《信息安全技术》实验二——Windows口令破解实验报告

热门文章

  1. 【前端】 在前端利用数学函数知识+box-shadow解波浪图形
  2. selenium处理隐藏元素的方法
  3. Unicode和Ascii的区别
  4. Python大神必须掌握的技能:多继承、super和MRO算法
  5. Gzip,BZip2,Lzo,Snappy总结
  6. eclipse导出jar(java打包导出jar)
  7. 使用Python编写打字训练小程序【华为云技术分享】
  8. Exponial
  9. 1、在aspx.cs后台Response.Write()跳转路径,打开新窗口
  10. 基于centos7.3 redhat7.3安装LAMP(php7.0 php7.1)生产环境实践