微信公众订阅号 上传临时素材示例

 1         try {
 2
 3             //声明分割线
 4             String boundary="-----";
 5
 6             //准备前期
 7             File file=new File(filePath);
 8             URL url=new URL("https://api.weixin.qq.com/cgi-bin/media/upload?access_token=Z_dtsiJWpgghBANNad1B9DS4sgfE9zOLmwIffYmDXDKs4ZWr6wmhX6xYNanplgB8BVsER8JFtRAnJlyc24kDiSfQwMIzIISbWKLHCkQU9ZhXYNokaZchKmA4QOtH6VoBTSBjAAAEDM&type=image");
 9             URLConnection urlConnection=url.openConnection();
10             urlConnection.setDoInput(true);
11             urlConnection.setDoOutput(true);
12             urlConnection.setUseCaches(false);
13             urlConnection.setRequestProperty("Connection","Keep-Alive");
14             urlConnection.setRequestProperty("Content-Type","multipart/form-data;boundary="+boundary);
15             urlConnection.setRequestProperty("Content-Length",String.valueOf(file.length()));
16
17             //获取文件输入流
18             InputStream inputStream=new FileInputStream(file);
19             //获取响应输出流
20             OutputStream outputStream = urlConnection.getOutputStream();
21
22             //准备写入头信息
23             outputStream.write((boundary+"--\r\n").getBytes());
24             outputStream.write(("Content-Disposition:form-data;name=\"media\";filename=\""+file.getName()+"\"\r\n").getBytes());
25             outputStream.write(("Content-Type:image/jpeg\r\n\r\n").getBytes());
26             //准备循环写入 文件流
27             byte[] b=new byte[1024];
28             int l;
29             while((l=inputStream.read(b,0,b.length))!=-1){
30                 outputStream.write(b,0,l);
31             }
32             outputStream.write(("\r\n"+boundary+"--\r\n").getBytes());
33
34             //关闭
35             outputStream.flush();
36             outputStream.close();
37             inputStream.close();
38
39             urlConnection.connect();
40
41             InputStream is=urlConnection.getInputStream();
42             int c;
43             while((c=is.read())!=-1){
44                 System.out.print((char)c);
45             }
46             is.close();
47         } catch (MalformedURLException e) {
48             e.printStackTrace();
49         } catch (IOException e) {
50             e.printStackTrace();
51         }

特别注意写入文件数据的时候,首尾都需要有分割线,并且分割线比RequestProperty里的Content-Type里的分割线多--个,并且注意换行

其次就是上传的name的值为media字符串

再其次注意请求所附带的参数

时间: 2024-11-02 08:06:04

微信公众订阅号 上传临时素材示例的相关文章

公众号上传临时素材

$imgUrl ='E:/boc/m/statics/images/banner.png';//路径非域名 $token ='14_gyVO8oLgwKdst05lcWxWFYI9ShW0dfbxUB_0kMNRFAm2pVTa6FpFcR-oSzYAuAs6X2U3WVQ-FE874IpnekG-AczlgGtdzmxIJ0dLCOee08x769IPSVlqdNYLhABAJUH'; $URL ='http://file.api.weixin.qq.com/cgi-bin/media/upl

微信公众号开发---上传临时素材到公众号遇到的问题:"errcode":41005,"errmsg":"media data missing

1.上传临时素材到公众号遇到的问题:"errcode":41005,"errmsg":"media data missing 解决办法:因为php版本的原因,上传素材一直保错.php的curl的curl_setopt 函数存在版本差异 php5.5已经把通过@加文件路径上传文件的方式给放入到Deprecated中了.php5.6默认是不支持这种方式了 特殊处理1:curl_setopt ( $ch, CURLOPT_SAFE_UPLOAD, false);

Java 微信公众号上传永久素材的方法

Java 微信公众号上传永久素材的方法 学习了:http://blog.csdn.net/u013791374/article/details/53258275 膜拜一下,源码如下: @RequestMapping(value="create") public String create(@RequestParam MultipartFile file, HttpServletRequest request, HttpServletResponse response, HttpSess

[040] 微信公众帐号开发教程第16篇-应用实例之历史上的今天

内容概要 本篇文章主要讲解如何在微信公众帐号上实现“历史上的今天”功能.这个例子本身并不复杂,但希望通过对它的学习,读者能够对正则表达式有一个新的认识,能够学会运用现有的网络资源丰富自己的公众账号. 何谓历史上的今天 回顾历史的长河,历史是生活的一面镜子:以史为鉴,可以知兴衰:历史上的每一天,都是喜忧参半:可以了解历史的这一天发生的事件,借古可以鉴今,历史是不能忘记的.查看历史上每天发生的重大事情,增长知识,开拓眼界,提高人文素养. 寻找接口(数据源) 要实现查询“历史上的今天”,首先我们要找到

微信开发订阅号(ASP.NET MVC4+jquery mobile+AppHarbor发布)

首先应该去微信公众平台注册一个账号,因为我是用的个人,所以只能注册订阅号,然后需要提供身份证照片,这些大家慢慢折腾.然后在微信管理面板中选择高级功能,进入开发者模式. 在服务器配置中需要提供最重要的url,用来接收微信发过来的消息和回复消息,token这个随便填一个就行了,主要是用来验证消息来源. 如果你是java php开发者,那么你可以选google AppEngin 或者sina app engine 来部署你的应用,但是很不幸,我是.net,这里我们使用国外的AppHarbor,appH

[038] 微信公众帐号开发教程第14篇-自定义菜单的创建及菜单事件响应

微信5.0发布 2013年8月5日,伴随着微信5.0 iPhone版的发布,公众平台也进行了重要的更新,主要包括: 1)运营主体为组织,可选择成为服务号或者订阅号: 2)服务号可以申请自定义菜单: 3)使用QQ登录的公众号,可以升级为邮箱登录: 4)使用邮箱登录的公众号,可以修改登录邮箱: 5)编辑图文消息可选填作者: 6)群发消息可以同步到腾讯微博. 其中,大家议论最多的当属前两条,就是关于帐号类型和自定义菜单的更新,我这里做几点补充说明: 1)目前公众号类型分为两种:服务号和订阅号,8月5日

微信公众帐号开发教程第3篇-开发模式启用及接口配置

编辑模式与开发模式 微信公众帐号申请成功后,要想接收处理用户的请求,就必须要在"高级功能"里进行配置,点击"高级功能",将看到如下界面: 从上图中可以看到,高级功能包含两种模式:编辑模式和开发模式,并且这两种模式是互斥关系,即两种模式不能同时开启.那两种模式有什么区别呢?作为开发人员到底要开启哪一种呢?编辑模式:主要针对非编程人员及信息发布类公众帐号使用.开启该模式后,可以方便地通过界面配置"自定义菜单"和"自动回复的消息".

[029] 微信公众帐号开发教程第5篇-各种消息的接收与响应

前一篇文章里我们已经把微信公众平台接口中消息及相关操作都进行了封装,本章节将主要介绍如何接收微信服务器发送的消息并做出响应. 明确在哪接收消息 从微信公众平台接口消息指南中可以了解到,当用户向公众帐号发消息时,微信服务器会将消息通过POST方式提交给我们在接口配置信息中填写的URL,而我们就需要在URL所指向的请求处理类CoreServlet的doPost方法中接收消息.处理消息和响应消息.   接收.处理.响应消息 下面先来看我已经写好的CoreServlet的完整代码: [java] vie

Zabbix微信企业订阅号报警设置

Zabbix微信企业订阅号报警设置 官方提供了较全的api,使用个人订阅号测试时,发现很多接口没有权限,无法获取订阅者openid,导致无法发送消息,然后要来了公司的企业订阅号来进行报警. 微信公众号登录:https://mp.weixin.qq.com/ 微信api参考:http://mp.weixin.qq.com/wiki/16/992df48524118c3e89945856694b30cc.html 微信api在线调试:http://mp.weixin.qq.com/debug/ 微信