• 概述

  在前面的文章微信JS初始化-- 微信JS系列文章(一)中已经介绍了微信JS初始化的相关工作,接下来本文继续就微信JS的图片上传功能进行描述,供大家参考。

  • 图片上传
$(function(){
var signUrl = location.href.split('#')[0];
signUrl = encodeURIComponent(signUrl);
$.ajax({
type:"POST",
url: webPath.webRoot + "/wxsdk/getWeixinJsConfig.json",
data:{'signUrl':signUrl},
dataType:'json',
success:function(msg) {
if(msg.result == "success"){
var weixinJsSdkConfig = msg.weixinJsSdkConfig;
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: weixinJsSdkConfig.appId, // 必填,公众号的唯一标识
timestamp: weixinJsSdkConfig.timestamp, // 必填,生成签名的时间戳
nonceStr: weixinJsSdkConfig.nonceStr, // 必填,生成签名的随机串
signature: weixinJsSdkConfig.signature,// 必填,签名,见附录1
jsApiList: ['chooseImage', 'uploadImage'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
}else{
showError("初始化失败,请稍后再试。");
}
},
error:function(XMLHttpRequest, textStatus) {
if (XMLHttpRequest.status == 500) {
var result = eval("(" + XMLHttpRequest.responseText + ")");
showError(result.errorObject.errorText);
return false;
}
}
});
}); function chooseImage(count){
var serverIdArray = null;
wx.chooseImage({
count: count, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
if(!isEmpty(localIds)){
var len = localIds.length;
serverIdArray = new Array(len);
for(var i=0;i<len;i++){
wx.uploadImage({
localId: localIds[i], // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
serverIdArray[i] = res.serverId; // 返回图片的服务器端ID
}
});
}
}
}
}); return serverIdArray;
} //判空
function isEmpty(obj){
if(obj==undefined || obj==null){
return true;
}else{
return false;
}
}
  • 图片下载

  调用微信JS上传完图片后,微信服务器会返回一个图片的服务器端ID(即为media_id),通过这个ID即可以把图片下载到自己的服务器保存。下载逻辑代码如下:

@Override
public String downloadImgFromWeixin(String outputPath, String mediaId) {
try {
Map<String, String> param = new HashMap<String, String>();
param.put("access_token", getAccessToken().trim());
param.put("media_id", mediaId);
return WeixinWebUtil.doGet("https://api.weixin.qq.com/cgi-bin/media/get", param, "UTF-8", 3000, 3000, outputPath);
} catch (IOException e) {
logger.error("通过media_id:" + mediaId + "下载图片失败");
throw new BusinessException(ResGlobal.ERRORS_USER_DEFINED, new String[]{e.getMessage()});
}
}

欢迎转载,转载必须标明出处

微信JS图片上传与下载功能--微信JS系列文章(三)的更多相关文章

  1. [python][flask] Flask 图片上传与下载例子(支持漂亮的拖拽上传)

    目录 1.效果预览 2.新增逻辑概览 3.tuchuang.py 逻辑介绍 3.1 图片上传 3.2 图片合法检查 3.3 图片下载 4.__init__.py 逻辑介绍 5.upload.html ...

  2. 【Python学习 】Python实现的FTP上传和下载功能

    一.背景 最近公司的一些自动化操作需要使用Python来实现FTP的上传和下载功能.因此参考网上的例子,撸了一段代码来实现了该功能,下面做个记录. 二.ftplib介绍 Python中默认安装的ftp ...

  3. SpringMVC+Ajax实现文件批量上传和下载功能实例代码

    需求: 文件批量上传,支持断点续传. 文件批量下载,支持断点续传. 使用JS能够实现批量下载,能够提供接口从指定url中下载文件并保存在本地指定路径中. 服务器不需要打包. 支持大文件断点下载.比如下 ...

  4. 兼容好的JS图片上传预览代码

    转 : http://www.codefans.net/articles/1395.shtml 兼容好的JS图片上传预览代码 (谷歌,IE11) <html xmlns="http:/ ...

  5. iOS开发中文件的上传和下载功能的基本实现-备用

    感谢大神分享 这篇文章主要介绍了iOS开发中文件的上传和下载功能的基本实现,并且下载方面讲到了大文件的多线程断点下载,需要的朋友可以参考下 文件的上传 说明:文件上传使用的时POST请求,通常把要上传 ...

  6. Libcurl最初的实现tfp上传和下载功能

    研究报告指出的目标是使用libcurl实现ftp文件上传和下载功能 一.Libcurlde简要 Libcurl的而且易于使用的利用url进行文件传输的库. , libcurl当前支持DICT, FIL ...

  7. 使用SpringMVC框架实现文件上传和下载功能

    使用SpringMVC框架实现文件上传和下载功能 (一)单个文件上传 ①配置文件上传解释器 <!—配置文件上传解释器 --> <mvc:annotation-driven>&l ...

  8. EBS开发附件上传和下载功能(转)

    原文地址: EBS开发附件上传和下载功能 上传 Oracle ERP二次开发中使用的方式有两种,一是通过标准功能,在系统管理员中定义即可,不用写代码,就可以使几乎任何Form具有附件功能,具体参考系统 ...

  9. 前端js图片上传

    前端js图片上传,原理用input type="file"获取图片然后把图片转换成base64编码传到后台. 图片上传 <!DOCTYPE html><html& ...

随机推荐

  1. .Net程序员学用Oracle系列(12):增删改查

    1.插入语句 1.1.INSERT 1.2.INSERT ALL 2.删除语句 2.1.DELETE 2.2.TRUNCATE 3.更新语句 3.1.UPDATE 3.2.带子查询的 UPDATE 3 ...

  2. 笑谈ArcToolbox (4) 非我族类

    笑谈ArcToolbox (4) 非我族类 by 李远祥 ArcToolbox的工具既能直接对数据源进行处理,也能对图层以及被选择要素进行处理.但有些数据看起来是空间数据,但实际上在处理的时候还是会出 ...

  3. wap网页、微信内嵌网页在手机端页面窗口尺寸如何不缩放

    如何让wap网页.微信内嵌网页内容(尺寸和文字)在手机端页面窗口尺寸不被强制缩放 在head中加入: <meta http-equiv="Content-Type" cont ...

  4. iOS Touch ID 身份认证

    iOS Touch ID 身份认证 iOS 8 及以后录了指纹的设备可以使用 touch ID 进行身份认证,指纹符合录入的指纹才能认证成功. 步骤 导入 LocalAuthentication 框架 ...

  5. java二维数组学习(转)

    转自:http://blog.csdn.net/java1992/article/details/5808709,在这里谢过了 /* * java学习: * 二维数组的使用: */public cla ...

  6. My97DatePicker.js 之无效日期设置

    1.下载并引用My97DatePicker.js 2.将工作日休假的和周末上班的维护到数据库中 3.取出某段时间内的不上班日期集合 /// <summary> ///获取 无效日期集合 1 ...

  7. CREELINKS平台_处理器CeCcp资源使用说明(CeCcp的配置与使用)

    0x00 CREELINKS平台简介     CREELINKS(创e联)是由大信科技有限公司研发,集合软硬件.操作系统.数据云储存.开发工具于一体,用于物联网产品的设计.研发与生产的平台.    平 ...

  8. c#模拟js escape方法(转)

    实现URI字符串转化成escape格式的字符 public static string Escape(string s)         {             StringBuilder sb ...

  9. BZOJ 3083: 遥远的国度(树链剖分+DFS序)

    可以很显而易见的看出,修改就是树链剖分,而询问就是在dfs出的线段树里查询最小值,但由于这道题会修改根节点,所以在查询的时候需判断x是否为root的祖先,如果不是就直接做,是的话应该查询从1-st[y ...

  10. jQuery写选项卡

    <!DOCTYPE html> <htmllang="en"> <head> <metacharset="UTF-8" ...