微信公众号如何上传永久图片素材并获取media_id

Left_you 2015-04-15 11:30:42

http://mp.weixin.qq.com/wiki/14/7e6c03263063f4813141c3e17dd4350a.html
实在是没看明白。调用示例里面的url无法访问。
type、media 两个参数在哪?
...全文
56607 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dingchengyu 2017-09-16
  • 打赏
  • 举报
回复
素材上传成功了,如何通过接口群发上传后的永久素材
jiawenbo89 2016-07-08
  • 打赏
  • 举报
回复
引用 6 楼 tigerqax 的回复:
[quote=引用 5 楼 jiawenbo89 的回复:] 验证可用 /** * 上传微信视频专用 * @param url * @param filePath * @param title * @param introduction * @return */ public static String postFile(String url, String filePath, String title,String introduction) { File file = new File(filePath); if (!file.exists()) return null; String result = null; try { URL url1 = new URL(url); HttpURLConnection conn = (HttpURLConnection) url1.openConnection(); conn.setConnectTimeout(5000); conn.setReadTimeout(30000); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8"); conn.setRequestProperty("Cache-Control", "max-age=0"); String boundary = "-----------------------------"+ System.currentTimeMillis(); conn.setRequestProperty("Content-Type","multipart/form-data; boundary=" + boundary); OutputStream output = conn.getOutputStream(); output.write(("--" + boundary + "\r\n").getBytes()); //output.write(String.format("Content-Disposition: form-data; name=\"media\"; filename=\"%s\"\r\n",file.getName()).getBytes()); output.write(String.format("Content-Disposition: form-data; name=\"media\"; filename=\"%s\"; filelength=\"%s\"\r\n",file.getName(),file.length()).getBytes()); output.write("Content-Type: video/mp4 \r\n\r\n".getBytes()); byte[] data = new byte[1024]; int len = 0; FileInputStream input = new FileInputStream(file); while ((len = input.read(data)) > -1) { output.write(data, 0, len); } output.write(("--" + boundary + "\r\n").getBytes()); output.write("Content-Disposition: form-data; name=\"description\";\r\n\r\n".getBytes()); output.write(String.format("{\"title\":\"%s\", \"introduction\":\"%s\"}", title,introduction).getBytes()); output.write(("\r\n--" + boundary + "--\r\n\r\n").getBytes()); output.flush(); output.close(); input.close(); InputStream resp = conn.getInputStream(); StringBuffer sb = new StringBuffer(); while ((len = resp.read(data)) > -1) sb.append(new String(data, 0, len, "utf-8")); resp.close(); result = sb.toString(); System.out.println(result); } catch (ClientProtocolException e) { logger.error("postFile,不支持http协议", e); } catch (IOException e) { logger.error("postFile数据传输失败", e); } logger.info("result="+result); return result; }
你这个是上传视频的,如何改成上传图片的,我把类型改成image以后总是提示不支持的类型[/quote] 好久不看了。最近忙别的 也顾不上看。你可以去看下我博客的文章。知道的都总结出来了。 http://blog.csdn.net/jiawenbo89/article/details/50442024
阿释密达丶 2016-04-21
  • 打赏
  • 举报
回复
引用 5 楼 jiawenbo89 的回复:
验证可用 /** * 上传微信视频专用 * @param url * @param filePath * @param title * @param introduction * @return */ public static String postFile(String url, String filePath, String title,String introduction) { File file = new File(filePath); if (!file.exists()) return null; String result = null; try { URL url1 = new URL(url); HttpURLConnection conn = (HttpURLConnection) url1.openConnection(); conn.setConnectTimeout(5000); conn.setReadTimeout(30000); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8"); conn.setRequestProperty("Cache-Control", "max-age=0"); String boundary = "-----------------------------"+ System.currentTimeMillis(); conn.setRequestProperty("Content-Type","multipart/form-data; boundary=" + boundary); OutputStream output = conn.getOutputStream(); output.write(("--" + boundary + "\r\n").getBytes()); //output.write(String.format("Content-Disposition: form-data; name=\"media\"; filename=\"%s\"\r\n",file.getName()).getBytes()); output.write(String.format("Content-Disposition: form-data; name=\"media\"; filename=\"%s\"; filelength=\"%s\"\r\n",file.getName(),file.length()).getBytes()); output.write("Content-Type: video/mp4 \r\n\r\n".getBytes()); byte[] data = new byte[1024]; int len = 0; FileInputStream input = new FileInputStream(file); while ((len = input.read(data)) > -1) { output.write(data, 0, len); } output.write(("--" + boundary + "\r\n").getBytes()); output.write("Content-Disposition: form-data; name=\"description\";\r\n\r\n".getBytes()); output.write(String.format("{\"title\":\"%s\", \"introduction\":\"%s\"}", title,introduction).getBytes()); output.write(("\r\n--" + boundary + "--\r\n\r\n").getBytes()); output.flush(); output.close(); input.close(); InputStream resp = conn.getInputStream(); StringBuffer sb = new StringBuffer(); while ((len = resp.read(data)) > -1) sb.append(new String(data, 0, len, "utf-8")); resp.close(); result = sb.toString(); System.out.println(result); } catch (ClientProtocolException e) { logger.error("postFile,不支持http协议", e); } catch (IOException e) { logger.error("postFile数据传输失败", e); } logger.info("result="+result); return result; }
你这个是上传视频的,如何改成上传图片的,我把类型改成image以后总是提示不支持的类型
jiawenbo89 2015-12-15
  • 打赏
  • 举报
回复
验证可用 /** * 上传微信视频专用 * @param url * @param filePath * @param title * @param introduction * @return */ public static String postFile(String url, String filePath, String title,String introduction) { File file = new File(filePath); if (!file.exists()) return null; String result = null; try { URL url1 = new URL(url); HttpURLConnection conn = (HttpURLConnection) url1.openConnection(); conn.setConnectTimeout(5000); conn.setReadTimeout(30000); conn.setDoOutput(true); conn.setDoInput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8"); conn.setRequestProperty("Cache-Control", "max-age=0"); String boundary = "-----------------------------"+ System.currentTimeMillis(); conn.setRequestProperty("Content-Type","multipart/form-data; boundary=" + boundary); OutputStream output = conn.getOutputStream(); output.write(("--" + boundary + "\r\n").getBytes()); //output.write(String.format("Content-Disposition: form-data; name=\"media\"; filename=\"%s\"\r\n",file.getName()).getBytes()); output.write(String.format("Content-Disposition: form-data; name=\"media\"; filename=\"%s\"; filelength=\"%s\"\r\n",file.getName(),file.length()).getBytes()); output.write("Content-Type: video/mp4 \r\n\r\n".getBytes()); byte[] data = new byte[1024]; int len = 0; FileInputStream input = new FileInputStream(file); while ((len = input.read(data)) > -1) { output.write(data, 0, len); } output.write(("--" + boundary + "\r\n").getBytes()); output.write("Content-Disposition: form-data; name=\"description\";\r\n\r\n".getBytes()); output.write(String.format("{\"title\":\"%s\", \"introduction\":\"%s\"}", title,introduction).getBytes()); output.write(("\r\n--" + boundary + "--\r\n\r\n").getBytes()); output.flush(); output.close(); input.close(); InputStream resp = conn.getInputStream(); StringBuffer sb = new StringBuffer(); while ((len = resp.read(data)) > -1) sb.append(new String(data, 0, len, "utf-8")); resp.close(); result = sb.toString(); System.out.println(result); } catch (ClientProtocolException e) { logger.error("postFile,不支持http协议", e); } catch (IOException e) { logger.error("postFile数据传输失败", e); } logger.info("result="+result); return result; }
木槿花夕V 2015-08-07
  • 打赏
  • 举报
回复
@RequestMapping(method = RequestMethod.GET, value = "/addNews")
    public void addNews() {
        String url = "https://api.weixin.qq.com/cgi-bin/material/add_news?access_token="
                + Constants.ACCESS_TOKEN;
        String body = "{\"articles\": [{" + "\"title\": \"原画赏析\","
                + "\"thumb_media_id\": \"s9xjFGg_GV5iwHXgsAJCqXuUpoEN-gXe0MUzASded1w\","
                + "\"author\": \"木槿花夕\"," + "\"digest\": \"DIGEST原画赏析\","
                + "\"show_cover_pic\": 1," + "\"content\": \"CONTENT原画赏析\","
                + "\"content_source_url\": \"http://www.douyer.com\"},{" + "\"title\": \"新手攻略\","
                + "\"thumb_media_id\": \"s9xjFGg_GV5iwHXgsAJCqbFOYK1W27x3iOCWcOgFCNU\","
                + "\"author\": \"木槿花夕\"," + "\"digest\": \"DIGEST新手攻略\","
                + "\"show_cover_pic\": 1," + "\"content\": \"CONTENT新手攻略\","
                + "\"content_source_url\": \"http://www.douyer.com\"}]}";
        String s = HttpUtil.postMethod(url, body);
        System.out.println(s);
    }
这个是我写的例子,给你参考下
Giberson1 2015-08-06
  • 打赏
  • 举报
回复
你往上看下就知道了。


他说的是curl命令,type、media是在curl命令的时候调用的

就像我们windows的cmd一样:
例如:
shutdown -s -t 3600 ------------- 一小时后关机
ts1027 2015-08-06
  • 打赏
  • 举报
回复
引用 1 楼 u010277702 的回复:
我是个人未认证服务号。好像没有认证过的号是不能上传素材的~~ 如果你是认证过的,那你可以试试上传临时素材看看可不可以,或者调用微信公众平台接口调试工具调试下。
我也是这个错误,是认证过的,临时素材能成功,但是永久素材始终不行
runningapple 2015-04-15
  • 打赏
  • 举报
回复
我是个人未认证服务号。好像没有认证过的号是不能上传素材的~~ 如果你是认证过的,那你可以试试上传临时素材看看可不可以,或者调用微信公众平台接口调试工具调试下。
“微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。详情 qq2326321088

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧