1. 程式人生 > >微信公眾訂閱號 上傳臨時素材示例

微信公眾訂閱號 上傳臨時素材示例

lap ack 換行 art blog quest bvs 輸入 valueof

技術分享
 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 }
View Code

特別註意寫入文件數據的時候,首尾都需要有分割線,並且分割線比RequestProperty裏的Content-Type裏的分割線多--個,並且註意換行

其次就是上傳的name的值為media字符串

再其次註意請求所附帶的參數

微信公眾訂閱號 上傳臨時素材示例