100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 微信企业号开发四:文件上传到微信服务器

微信企业号开发四:文件上传到微信服务器

时间:2022-05-31 18:14:53

相关推荐

微信企业号开发四:文件上传到微信服务器

根据官网api现在已经开放了永久素材的管理,下面演示的是临时素材的上传DEMO,

用于上传图片、语音、视频等媒体资源文件以及普通文件(如doc,ppt),接口返回媒体资源标识ID:media_id。请注意,media_id是可复用的,同一个media_id可用于消息的多次发送(3天内有效)

请求说明

Https请求方式: POST

https://qyapi./cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE

参数说明权限说明

完全公开。所有管理组均可调用,media_id可以共享。

返回说明

{"type": "image","media_id": "1G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu9V5w7o8K0","created_at": "1380000000"}

上传的媒体文件限制

所有文件size必须大于5个字节

图片(image):2MB,支持JPG,PNG格式

语音(voice):2MB,播放长度不超过60s,支持AMR格式

视频(video):10MB,支持MP4格式

普通文件(file):20MB

/*** 文件上传到微信服务器* @param fileType 文件类型 媒体文件类型,分别有图片(image)、语音(voice)、视频(video),普通文件(file)* @param filePath 文件路径* @return JSONObject* @throws Exception*/public JSONObject send(String fileType, String filePath) throws Exception { String result = null; File file = new File(filePath); if (!file.exists() || !file.isFile()) { throw new IOException("文件不存在"); } String token=getTokenFromWx();/** * 第一部分 */ URL urlObj = new URL("https://qyapi./cgi-bin/media/upload?access_token="+ token + "&type="+fileType+""); 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"); sb.append("Content-Disposition: form-data;name=\"media\";filename=\""+ file.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); // 文件正文部分 // 把文件已流文件的方式 推入到url中 DataInputStream in = new DataInputStream(new FileInputStream(file)); 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(); StringBuffer buffer = new StringBuffer(); BufferedReader reader = null; try { // 定义BufferedReader输入流来读取URL的响应 reader = new BufferedReader(new InputStreamReader(con.getInputStream())); String line = null; while ((line = reader.readLine()) != null) { //System.out.println(line); buffer.append(line); } if(result==null){ result = buffer.toString(); } } catch (IOException e) { System.out.println("发送POST请求出现异常!" + e); e.printStackTrace(); throw new IOException("数据读取异常"); } finally { if(reader!=null){ reader.close(); } } JSONObject jsonObj =JSONObject.fromObject(result); return jsonObj; }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。