public String uploadMaterial(String url,InputStream sbs,String filelength,String filename, String type) throws Exception {try {

DataInputStream in=new DataInputStream(sbs);url = url.replace("TYPE", type);URL urlObj = new URL(url);

// 创建Http连接HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();conn.setRequestMethod("POST");conn.setDoInput(true);conn.setDoOutput(true);conn.setUseCaches(false); // 使用post提交需要设置忽略缓存

// 消息请求头信息conn.setRequestProperty("Connection", "Keep-Alive");conn.setRequestProperty("Charset", "UTF-8");

// 设置边界String BOUNDARY = "----------" + System.currentTimeMillis();conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + BOUNDARY);

StringBuilder sb = new StringBuilder();sb.append("--"); // 必须多两道线sb.append(BOUNDARY);sb.append("\r\n");sb.append("Content-Disposition:form-data;name=\"media\";filename=\"" + filename + "\";filelength=\"" + filelength + "\"\r\n");sb.append("Content-Type:application/octet-stream\r\n\r\n");

byte[] head = sb.toString().getBytes("utf-8");

// 创建输出流OutputStream out = new DataOutputStream(conn.getOutputStream());// 获得输出流表头out.write(head);

// 文件正文部分//DataInputStream in=new DataInputStream(new ByteArrayInputStream(byts.getBytes(CharEncoding.UTF_8)));//in=new DataInputStream(meidaConn.getInputStream());int bytes = 0;byte[] bufferOut = new byte[1024 * 1024 * 10]; // 10Mwhile ((bytes = in.read(bufferOut)) != -1) {out.write(bufferOut, 0, bytes);}

/*对类型为video的素材进行特殊处理*/if ("video".equals(type)) {out.write(("--" + BOUNDARY + "\r\n").getBytes());out.write("Content-Disposition: form-data; name=\"description\";\r\n\r\n".getBytes());out.write(String.format("{\"title\":\"%s\", \"introduction\":\"%s\"}", filename, "miaoshu").getBytes());}

in.close();

// 结尾byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");out.write(foot);out.flush();out.close();

// 获取响应StringBuffer buffer = new StringBuffer();BufferedReader reader = null;String result = null;try {reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line = null;while ((line = reader.readLine()) != null) {buffer.append(line);}if (result == null) {result = buffer.toString();}} catch (IOException e) {e.printStackTrace();} finally {reader.close();}

logger.info("uploadMaterial-result:" + result);return result;} catch (Exception e) {logger.error("uploadMaterial-ex:" + e.getMessage());throw e;}

}

public enum WxMaterialType {

WX_MATERIALTYPE_NEWS("news"), // 图文WX_MATERIALTYPE_IMAGE("image"), // ͼƬWX_MATERIALTYPE_VOICE("voice"), // 语音WX_MATERIALTYPE_VIDEO("video"),// 视频WX_MATERIALTYPE_IMG("txtimg");//图文中的图片,仅在上传图文消息内的图片获取URL时使用

private String type;

WxMaterialType(String type) {this.type = type;}

public String getType() {return type;}

public void setType(String type) {this.type = type;}}

来源:博客园

作者:chuntao

链接:https://www.cnblogs.com/chuntao/p/11433324.html

微信上传素材 java_微信素材上传(JAVA)相关推荐

  1. 微信上传素材 java_微信上传素材php代码

    $url:微信上传媒体素材的api接口. $path_img:服务器文件的绝对路径 这里的绝对路径不是$_FILES中的临时路径,不然会报文件类型错误的异常. private function Htt ...

  2. 微信小程序语音识别java_微信小程序实现语音识别功能

    原标题:微信小程序实现语音识别功能 使用小程序实现语音识别功能,由于语音识别可以直接使用各厂家的API接口,并且小程序为腾讯所有,因此考虑到可能的低延时,采用了腾讯提供的免费API接口,准确讲是腾讯语 ...

  3. 微信授权绑定手机号 java_微信小程序获取手机号授权用户登录功能

    小程序中有很多地方都会用到注册用户信息的地方,用户需要填写手机号等,有了这个组件可以快速获取微信绑定手机号码,无须用户填写. 1.getPhoneNumber这个组件通过button来实现(别的标签无 ...

  4. 微信刷卡 sdk java_微信支付 Java SDK

    微信支付 Java SDK 对微信支付开发者文档中给出的API进行了封装. com.github.wxpay.sdk.WXPay类下提供了对应的方法: 方法名 说明microPay 刷卡支付 unif ...

  5. 微信支付查询订单java_微信支付java版本之查询订单

    本文实例为大家分享了微信支付订单的查询接口,供大家参考,具体内容如下 1.接口简介 2.代码实现 package com.zhrd.bussinss.platform.controller.shop; ...

  6. php上传公众号临时素材-微信开发素材管理6

    微信公众平台中, 临时素材是一种重要的素材, 它的特点是: 1. 没有数量限制,你可以上传任意数量的临时素材 2. 微信服务器保存时间短,只有3天,到期后media_id就不能使用了 这一节课程中, ...

  7. 上传网络图片到微信临时素材换取mediaId

    一.前提说明 很多微信开发的场景需要传一个mediaId,即微信素材的媒体id,根据[微信开放平台接口文档],将已知网络图片URL上传到微信服务器,并换取媒体id,这个地方用到缓存.相关代码如下:(h ...

  8. 微信公众号开发-上传媒体素材到微信并存入相关信息到数据库

    流程: 本地指定临时或永久素材后调用微信媒体素材上传api,将文件上传到微信服务器,微信返回含media_id的信息,本地数据库存入相关信息,以供以后素材使用. 代码 素材上传页面 <!DOCT ...

  9. typecho本地上传头像_微信QQ抖音透明头像制作方法,还有不会的吗?

       精彩内容每天更新 她搂着被子从床上坐起来,愣了十几秒,听到厨房有动静后,这才撒着脚往房间外跑,看到一抹修长背影在厨房里忙活. 邵允琛做好早餐从厨房出来,见陆瑶穿着睡裙站那,眉头皱了皱," ...

最新文章

  1. 各大厂这个档次分配,大佬们有什么看法?
  2. 英语口语智能测试软件,口语易英语口语智能评测训系统 官方版v7.9
  3. Java8新特性 Optional类
  4. 美国总统就职演说词汇分布图
  5. 在VS 2010中查询和导航代码
  6. 单链表的顺序查找c语言,单链表(C语言)
  7. numpy 归一化_图卷积网络到底怎么做,这是一份极简的Numpy实现
  8. 构建自己的地理信息空间数据库及与客户端简单交互(内含彩蛋)
  9. Pyspark:电影推荐
  10. linux安装windows常用中文字体库
  11. 第二届天府大地艺术季(春)三道堰青杠树村分会场开幕
  12. 1214_嵌入式硬件常识积累_什么是TTL电平
  13. 数据可视化技术是指运用计算机,计算机图形技术在数据计算方面的应用
  14. 文档数据防泄密需求分析
  15. AR家居,随时随地在家“玩装修”!
  16. 史上最全图解JVM,京东小哥带你了解性能提升100%背后的秘密武器
  17. 多领域 ASR 英语语料库——GigaSpeech 基本介绍——附有效下载教程
  18. 崩坏三服务器维护,崩坏3登录过程所遇问题解决方法汇总
  19. 什么是PM?团队角色
  20. JavaScript中push() 方法

热门文章

  1. 打包 压缩 命令tar zip
  2. PO、VO、DAO、BO、POJO
  3. Leetcode按Tag刷题
  4. 一,彻底理解第一个C语言程序 Hello World
  5. Openssl的证书格式转换
  6. php判断 二维数组中 是否 存在某个一维数组
  7. 分享一个自定义的 console 类,让你不再纠结JS中的调试代码的兼容
  8. 新浪微博iOS版SDK“宝玉XP”框架学习笔记
  9. 【转】XP/2000无法使用“缩略图查看”、右键无“设置桌面背景”选项问题详解...
  10. 用JS访问iframe中的元素