微信公众号开发
来源:互联网 发布:中南大学网络考试答案 编辑:程序博客网 时间:2024/05/04 20:14
一、多媒体文件的上传及下载
微信公众号多媒体文件上传及下载(wu1g119博主)
多媒体文件修改成网络地址获取,非本地文件,代码如下:
public String MediaUpload(String access_token, String type, String mediaUrl) {String media_id = "";String url = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=" + access_token + "&type="+ type;try {if (StringUtils.isBlank(mediaUrl)) {return media_id;}//根据多媒体文件URL获取输入流 URL fileUrl = new URL(mediaUrl);DataInputStream in = new DataInputStream(fileUrl.openStream());File f = new File(mediaUrl);//请求微信上传多媒体文件接口URL urlObj = new URL(url);HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();con.setRequestMethod("POST"); // 以Post方式提交表单,默认get方式 con.setDoInput(true);con.setDoOutput(true);con.setUseCaches(false); // post方式不能使用缓存 // 设置请求头信息 con.setRequestProperty("Connection", "Keep-Alive");con.setRequestProperty("Charset", "UTF-8");// 设置边界 String BOUNDARY = "----------" + System.currentTimeMillis();con.setRequestProperty("content-type", "multipart/form-data; boundary=" + BOUNDARY);// 请求正文信息 // 第一部分: StringBuilder sb = new StringBuilder();sb.append("--"); // ////////必须多两道线 sb.append(BOUNDARY);sb.append("\r\n");//filename必须以.jpg为后缀,否则报"40005,不合法的文件类型"错误sb.append("Content-Disposition: form-data;name=\"file\";filename=\"" + f.getName() + "\"\r\n");sb.append("Content-Type:application/octet-stream\r\n\r\n");byte[] head = sb.toString().getBytes("utf-8");// 获得输出流 OutputStream out = new DataOutputStream(con.getOutputStream());out.write(head);// 文件正文部分 int bytes = 0;byte[] bufferOut = new byte[1024];while ((bytes = in.read(bufferOut)) != -1) {out.write(bufferOut, 0, bytes);}in.close();// 结尾部分 byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");// 定义最后数据分隔线 out.write(foot);out.flush();out.close();/** * 读取服务器响应,必须读取,否则提交不成功 */try {StringBuffer buffer = new StringBuffer();BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));String line = null;while ((line = reader.readLine()) != null) {buffer.append(line);}String respStr = buffer.toString();if (!respStr.contains("errcode")) {ObjectMapper mapper = new ObjectMapper();try {MediaUploadResultDto dto = mapper.readValue(respStr.toString(), MediaUploadResultDto.class);media_id = dto.getMedia_id();} catch (JsonParseException e) {logger.warn("解析json错误," + respStr, e);} catch (JsonMappingException e) {logger.warn("解析json错误," + respStr, e);} catch (IOException e) {logger.warn("解析json时IOException," + respStr, e);}}} catch (Exception e) {logger.warn("发送POST请求出现异常!", e);}} catch (Exception e) {logger.warn("调用微信多媒体上传接口上传文件失败!文件路径=" + mediaUrl, e);}return media_id;}
0 0
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 微信公众号开发
- 转载--http的安全方法和幂等性
- powerdesiger 生成excel 数据字典
- django可重用app目录
- javascript中Array.sort()方法
- iOS屏幕旋转学习笔记
- 微信公众号开发
- myeclipse安装svn的多种方式
- 类似Google Play 平滑动画效果
- 在Python中如何将mongodb库中的fs.file中的内容迁移到另一mongodb中去问题
- 参考资料
- Android系统手机端抓包方法
- 海水淡化膜:世韩4040海水淡化膜清洗指标
- ZOJ1629
- 用windows批处理写的ftp自动上传脚本