最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java微信公眾平臺(tái)之素材管理

 更新時(shí)間:2018年05月07日 11:04:11   作者:Phil_Jing  
這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺(tái)之素材管理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

微信素材管理和群發(fā)這塊文檔對(duì)Java很不友好。本文只對(duì)新增臨時(shí)素材,新增永久素材做介紹,其余獲取、刪除、修改自行補(bǔ)充

公眾號(hào)經(jīng)常有需要用到一些臨時(shí)性的多媒體素材的場(chǎng)景,例如在使用接口特別是發(fā)送消息時(shí),對(duì)多媒體文件、多媒體消息的獲取和調(diào)用等操作,是通過media_id來進(jìn)行的。素材管理接口對(duì)所有認(rèn)證的訂閱號(hào)和服務(wù)號(hào)開放。

素材的限制

圖片(image): 2M,支持PNG\JPEG\JPG\GIF格式
語音(voice):2M,播放長度不超過60s,支持AMR\MP3格式
視頻(video):10MB,支持MP4格式
縮略圖(thumb):64KB,支持JPG格式

一、新增臨時(shí)素材

接口:https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE,再傳一個(gè)媒體文件類型,可以是圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb)。

1、訂閱號(hào)和服務(wù)號(hào)要通過認(rèn)證
2、臨時(shí)素材media_id是可復(fù)用的

3、媒體文件在微信后臺(tái)保存時(shí)間為3天,即3天后media_id失效。

/** 
 * 上傳臨時(shí)素材(本地) 
 * 
 * @param accessToken 
 * @param type 
 *   媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb) 
 * @param path 
 *   圖片路徑 
 * @return 
 */ 
 
public static UploadMediasResult uploadTempMediaFile(String accessToken, String type, String path) { 
 UploadMediasResult result = null; 
 TreeMap<String, String> params = new TreeMap<>(); 
 params.put("access_token", accessToken); 
 params.put("type", type); 
 try { 
  String json = HttpsUploadMediaFile(SystemConfig.POST_METHOD, WechatConfig.UPLOAD_TEMP_MEDIA_TYPE_URL, 
    params, path); 
  result = JsonUtil.fromJsonString(json, UploadMediasResult.class); 
 } catch (Exception e) { 
  e.printStackTrace(); 
 } 
 return result; 
} 
 
/** 
 * 上傳臨時(shí)素材(網(wǎng)絡(luò)) 
 * 
 * @param accessToken 
 * @param type 
 *   媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb) 
 * @param path 
 *   圖片路徑 
 * @return 
 */ 
public static UploadMediasResult uploadTempMedia(String accessToken, String type, String path) { 
 UploadMediasResult result = null; 
 TreeMap<String, String> params = new TreeMap<>(); 
 params.put("access_token", accessToken); 
 params.put("type", type); 
 try { 
  String json = HttpsUploadMedia(SystemConfig.POST_METHOD, WechatConfig.UPLOAD_TEMP_MEDIA_TYPE_URL, params, 
    path, 0, 0); 
  result = JsonUtil.fromJsonString(json, UploadMediasResult.class); 
 } catch (Exception e) { 
  e.printStackTrace(); 
 } 
 return result; 
} 

二、新增永久素材

接口:https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN&type=TYPE,媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video,例外)和縮略圖(thumb)

/** 
 * 上傳永久素材(本地) 
 * 
 * @param accessToken 
 * @param type 
 *   媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb) 
 * @return 
 */ 
public static UploadMediasResult uploadForeverMediaFile(String accessToken, String type, String path) { 
 UploadMediasResult result = null; 
 TreeMap<String, String> params = new TreeMap<>(); 
 params.put("access_token", accessToken); 
 params.put("type", type); 
 try { 
  String json = HttpsUploadMediaFile(SystemConfig.POST_METHOD, WechatConfig.UPLOAD_FOREVER_MEDIA_TYPE_URL, 
    params, path); 
  result = JsonUtil.fromJsonString(json, UploadMediasResult.class); 
 } catch (Exception e) { 
  e.printStackTrace(); 
 } 
 return result; 
} 
 
/** 
 * 上傳永久素材(網(wǎng)絡(luò)) 
 * 
 * @param accessToken 
 * @param type 
 *   媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb) 
 * @return 
 */ 
public static UploadMediasResult uploadForeverMedia(String accessToken, String type, String path) { 
 UploadMediasResult result = null; 
 TreeMap<String, String> params = new TreeMap<>(); 
 params.put("access_token", accessToken); 
 params.put("type", type); 
 try { 
  String json = HttpsUploadMedia(SystemConfig.POST_METHOD, WechatConfig.UPLOAD_FOREVER_MEDIA_TYPE_URL, params, 
    path, 0, 0); 
  result = JsonUtil.fromJsonString(json, UploadMediasResult.class); 
 } catch (Exception e) { 
  e.printStackTrace(); 
 } 
 return result; 
} 

 新增永久視頻素材需特別注意,在上傳視頻素材時(shí)需要POST另一個(gè)表單,id為description,包含素材的描述信息title和introduction,內(nèi)容格式為JSON

/** 
 * 上傳永久素材(video) 
 * 
 * @param accessToken 
 * @return 
 */ 
public static String uploadForeverMediaFile(String accessToken, String title, String introduction, String path) { 
 TreeMap<String, String> params = new TreeMap<>(); 
 params.put("access_token", accessToken); 
 params.put("type", "video"); 
 String mediaId = null; 
 try { 
  String json = HttpsUploadVideoMediaFile(SystemConfig.POST_METHOD, 
    WechatConfig.UPLOAD_FOREVER_MEDIA_TYPE_URL, params, path, title, introduction); 
  mediaId = JsonUtil.fromJsonString(json, "media_id"); 
 } catch (Exception e) { 
  e.printStackTrace(); 
 } 
 return mediaId; 
} 
 
/** 
 * 上傳永久素材(video,網(wǎng)絡(luò)) 
 * 
 * @param accessToken 
 * @return 
 */ 
public static String uploadForeverMedia(String accessToken, String title, String introduction, String path) { 
 TreeMap<String, String> params = new TreeMap<>(); 
 params.put("access_token", accessToken); 
 params.put("type", "video"); 
 String mediaId = null; 
 try { 
  String json = HttpsUploadVideoMedia(SystemConfig.POST_METHOD, WechatConfig.UPLOAD_FOREVER_MEDIA_TYPE_URL, 
    params, path, title, introduction, 0, 0); 
  mediaId = JsonUtil.fromJsonString(json, "media_id"); 
 } catch (Exception e) { 
  e.printStackTrace(); 
 } 
 return mediaId; 
} 

三、新增永久圖文素材

接口:https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN,post信息參見UploadNewsMedia 實(shí)體類

 對(duì)于常用的素材,開發(fā)者可通過本接口上傳到微信服務(wù)器,永久使用.

1、永久圖片素材新增后,將帶有URL返回給開發(fā)者,開發(fā)者可以在騰訊系域名內(nèi)使用(騰訊系域名外使用,圖片將被屏蔽)。
2、公眾號(hào)的素材庫保存總數(shù)量有上限:圖文消息素材、圖片素材上限為5000,其他類型為1000。
3、圖文消息的具體內(nèi)容中,微信后臺(tái)將過濾外部的圖片鏈接,圖片url需通過"上傳圖文消息內(nèi)的圖片獲取URL"接口上傳圖片獲取。
4、"上傳圖文消息內(nèi)的圖片獲取URL"接口所上傳的圖片,不占用公眾號(hào)的素材庫中圖片數(shù)量的5000個(gè)的限制,圖片僅支持jpg/png格式,大小必須在1MB以下。
5、圖文消息支持正文中插入自己帳號(hào)和其他公眾號(hào)已群發(fā)文章鏈接的能力。

/** 
 * 上傳永久圖文消息的素材 
 * 
 * @param accessToken 
 *   授權(quán)token 
 * @param entity 
 *   圖文消息對(duì)象 
 * @return 
 */ 
public static UploadMediasResult uploadNewsMedia(String accessToken, List<UploadNewsMedia> entity) { 
 UploadMediasResult result = null; 
 TreeMap<String, String> params = new TreeMap<>(); 
 params.put("access_token", accessToken); 
 // post 提交的參數(shù) 
 TreeMap<String, List<UploadNewsMedia>> dataParams = new TreeMap<String, List<UploadNewsMedia>>(); 
 dataParams.put("articles", entity); 
 String data = JsonUtil.toJsonString(dataParams); 
 String json = HttpReqUtil.HttpsDefaultExecute(SystemConfig.POST_METHOD, 
   WechatConfig.UPLOAD_FOREVER_NEWS_MEDIA_URL, params, data); 
 result = JsonUtil.fromJsonString(json, UploadMediasResult.class); 
 return result; 
} 

四、上傳圖文消息內(nèi)的圖片獲取URL

接口:https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN

本接口所上傳的圖片不占用公眾號(hào)的素材庫中圖片數(shù)量的5000個(gè)的限制。圖片僅支持jpg/png格式,大小必須在1MB以下,此接口返回的url就是上傳圖片的URL,可放置圖文消息中使用。

/** 
 * 上傳圖文消息內(nèi)的圖片獲取URL(本地) 
 * 
 * @param accessToken 
 * @param path 
 * @return 
 */ 
public static String uploadImgMediaFile(String accessToken, String path) { 
 TreeMap<String, String> params = new TreeMap<>(); 
 params.put("access_token", accessToken); 
 String url = null; 
 try { 
  String json = HttpsUploadMediaFile(SystemConfig.POST_METHOD, WechatConfig.UPLOAD_IMG_MEDIA_URL, params, 
    path); 
  url = JsonUtil.fromJsonString(json, "url"); 
 } catch (Exception e) { 
  e.printStackTrace(); 
 } 
 return url; 
} 
 
/** 
 * 上傳圖文消息內(nèi)的圖片獲取URL(網(wǎng)絡(luò)) 
 * 
 * @param accessToken 
 * @param path 
 * @return 
 */ 
public static String uploadImgMedia(String accessToken, String path) { 
 TreeMap<String, String> params = new TreeMap<String, String>(); 
 params.put("access_token", accessToken); 
 String url = null; 
 try { 
  String json = HttpsUploadMedia(SystemConfig.POST_METHOD, WechatConfig.UPLOAD_IMG_MEDIA_URL, params, path, 0, 
    0); 
  url = JsonUtil.fromJsonString(json, "url"); 
 } catch (Exception e) { 
  e.printStackTrace(); 
 } 
 return url; 
} 

五、部分工具類

配置類

public static final String UPLOAD_IMG_MEDIA_URL = "https://api.weixin.qq.com/cgi-bin/media/uploadimg"; 
public static final String UPLOAD_FOREVER_NEWS_MEDIA_URL = "https://api.weixin.qq.com/cgi-bin/material/add_news"; 
public static final String UPLOAD_TEMP_MEDIA_TYPE_URL = "https://api.weixin.qq.com/cgi-bin/media/upload"; 
public static final String UPLOAD_FOREVER_MEDIA_TYPE_URL = "https://api.weixin.qq.com/cgi-bin/material/add_material"; 

上傳圖文消息素材返回類

package com.phil.wechat.msg.model.media; 
 
/** 
 * 上傳圖文消息素材返回的結(jié)果 
 * @author phil 
 * @date 2017年9月20日 
 * 
 */ 
public class UploadMediasResult { 
 private String type; // 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video)和縮略圖(thumb),次數(shù)為news,即圖文消息 
 private String media_id; // 媒體文件/圖文消息上傳后獲取的唯一標(biāo)識(shí) 
 private String created_at; // 媒體文件上傳時(shí)間 
} 

上傳圖文消息素材實(shí)體類

package com.phil.wechat.msg.model.media; 
 
import java.io.Serializable; 
 
/** 
 * 上傳圖文消息素材實(shí)體類 
 * @author phil 
 * @date 2017年9月20日 
 */ 
public class UploadNewsMedia implements Serializable { 
 
 private static final long serialVersionUID = 6551817058101753854L; 
 private String thumb_media_id; // 圖文消息縮略圖的media_id,可以在基礎(chǔ)支持-上傳多媒體文件接口中獲得 
 private String author; // 圖文消息的作者 
 private String title; // 圖文消息的標(biāo)題 
 private String content_source_url; // 圖文消息點(diǎn)擊閱讀原文的鏈接 
 private String content; // 圖文消息頁面的內(nèi)容,支持HTML標(biāo)簽 
 private String digest; // 圖文消息的描述 
 private int show_conver_pic; // 是否顯示為封面 1表示顯示為封面 0 不顯示為封面 
} 

上傳方法

/** 
 * 上傳媒體文件(本地) 
 * 
 * @param method 
 *   請(qǐng)求方法 GET/POST 
 * @param path 
 *   api的路徑 
 * @param param 
 *   api參數(shù) 
 * @param mediaPath 
 *   待上傳的image/music 的path 
 * @return 
 * @throws Exception 
 */ 
public static String HttpsUploadMediaFile(String method, String path, Map<String, String> param, String mediaPath) 
  throws Exception { 
 String result = null; 
 URL url = new URL(setParmas(param, path, "")); 
 OutputStream output = null; 
 DataInputStream inputStream = null; 
 try { 
  File file = new File(mediaPath); 
  if (!file.isFile() || !file.exists()) { 
   throw new IOException("file is not exist"); 
  } 
  HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
  con.setDoInput(true); 
  con.setDoOutput(true); 
  con.setUseCaches(false); 
  con.setRequestMethod(SystemConfig.POST_METHOD); 
  // 設(shè)置請(qǐng)求頭信息 
  con.setRequestProperty("Connection", "Keep-Alive"); 
  con.setRequestProperty("Charset", SystemConfig.DEFAULT_CHARACTER_ENCODING); 
  // 設(shè)置邊界 
  String boundary = "----------" + System.currentTimeMillis(); 
  con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); 
  // 請(qǐng)求正文信息 
  // 第一部分 
  output = new DataOutputStream(con.getOutputStream()); 
  IOUtils.write(("--" + boundary + "\r\n").getBytes(SystemConfig.DEFAULT_CHARACTER_ENCODING), output); 
  IOUtils.write(("Content-Disposition: form-data;name=\"media\"; filename=\"" + file.getName() + "\"\r\n") 
    .getBytes(SystemConfig.DEFAULT_CHARACTER_ENCODING), output); 
  IOUtils.write( 
    "Content-Type:application/octet-stream\r\n\r\n".getBytes(SystemConfig.DEFAULT_CHARACTER_ENCODING), 
    output); 
  // IOUtils.write(("Content-Type: "+ fileExt + "\r\n\r\n").getBytes(), output); 
  // 文件正文部分 
  // 把文件已流文件的方式 推入到url中 
  inputStream = new DataInputStream(new FileInputStream(file)); 
  IOUtils.copy(inputStream, output); 
  // 結(jié)尾部分 
  IOUtils.write(("\r\n--" + boundary + "--\r\n").getBytes(SystemConfig.DEFAULT_CHARACTER_ENCODING), output); 
  output.flush(); 
  result = inputStreamToString(con.getInputStream()); 
 } catch (MalformedURLException e) { 
  e.printStackTrace(); 
 } catch (ProtocolException e) { 
  e.printStackTrace(); 
 } catch (IOException e) { 
  throw new IOException("read data error"); 
 } finally { 
  IOUtils.closeQuietly(output); 
  IOUtils.closeQuietly(inputStream); 
 } 
 return result; 
} 
 
/** 
 * 上傳媒體文件(不能本地) 
 * 
 * @param method 
 *   請(qǐng)求方法 GET/POST 
 * @param path 
 *   api的路徑 
 * @param param 
 *   api參數(shù) 
 * @param mediaPath 
 *   待上傳的image/music 的path 
 * @param connTime 
 *   連接時(shí)間 默認(rèn)為5000 
 * @param readTime 
 *   讀取時(shí)間 默認(rèn)為5000 
 * @return 
 * @throws Exception 
 */ 
public static String HttpsUploadMedia(String method, String path, Map<String, String> param, String mediaPath, 
  int connTime, int readTime) throws Exception { 
 String result = ""; 
 URL url = new URL(setParmas(param, path, "")); 
 OutputStream output = null; 
 BufferedInputStream inputStream = null; 
 try { 
  String boundary = "----"; 
  HttpURLConnection conn = getConnection(method, url); 
  conn.setConnectTimeout(connTime == 0 ? DEFAULT_CONNTIME : connTime); 
  conn.setReadTimeout(readTime == 0 ? DEFAULT_UPLOAD_READTIME : readTime); 
  conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); 
  output = conn.getOutputStream(); 
  URL mediaUrl = new URL(mediaPath); 
  if (mediaUrl != null) { 
   HttpURLConnection mediaConn = (HttpURLConnection) mediaUrl.openConnection(); 
   mediaConn.setDoOutput(true); 
   mediaConn.setUseCaches(false); 
   mediaConn.setRequestMethod(SystemConfig.GET_METHOD); 
   mediaConn.setConnectTimeout(connTime == 0 ? DEFAULT_CONNTIME : connTime); 
   mediaConn.setReadTimeout(readTime == 0 ? DEFAULT_UPLOAD_READTIME : readTime); 
   String connType = mediaConn.getContentType(); 
   // 獲得文件擴(kuò)展 
   String fileExt = getFileExt(connType); 
   IOUtils.write(("--" + boundary + "\r\n").getBytes(), output); 
   IOUtils.write(("Content-Disposition: form-data; name=\"media\"; filename=\"" + getFileName(mediaPath) 
     + "\"\r\n").getBytes(), output); 
   IOUtils.write(("Content-Type: " + fileExt + "\r\n\r\n").getBytes(), output); 
   inputStream = new BufferedInputStream(mediaConn.getInputStream()); 
   IOUtils.copy(inputStream, output); 
   IOUtils.write(("\r\n----" + boundary + "--\r\n").getBytes(), output); 
   mediaConn.disconnect(); 
   // 獲取輸入流 
   result = inputStreamToString(conn.getInputStream()); 
  } 
 } catch (MalformedURLException e) { 
  e.printStackTrace(); 
 } catch (ProtocolException e) { 
  e.printStackTrace(); 
 } catch (IOException e) { 
  e.printStackTrace(); 
 } finally { 
  IOUtils.closeQuietly(output); 
  IOUtils.closeQuietly(inputStream); 
 } 
 return result; 
} 
 
/** 
 * 上傳Video媒體文件(本地) 
 * 
 * @param method 
 *   請(qǐng)求方法 GET/POST 
 * @param path 
 *   api的路徑 
 * @param param 
 *   api參數(shù) 
 * @param mediaPath 
 *   待上傳的voide 的path 
 * @param title 
 *   視頻標(biāo)題 
 * @param introduction 
 *   視頻描述 
 * @return 
 * @throws Exception 
 */ 
public static String HttpsUploadVideoMediaFile(String method, String path, Map<String, String> param, 
  String mediaPath, String title, String introduction) throws Exception { 
 String result = null; 
 URL url = new URL(setParmas(param, path, "")); 
 OutputStream output = null; 
 DataInputStream inputStream = null; 
 try { 
  File file = new File(mediaPath); 
  if (!file.isFile() || !file.exists()) { 
   throw new IOException("file is not exist"); 
  } 
  HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
  con.setDoInput(true); 
  con.setDoOutput(true); 
  con.setUseCaches(false); 
  con.setRequestMethod(SystemConfig.POST_METHOD); 
  // 設(shè)置請(qǐng)求頭信息 
  con.setRequestProperty("Connection", "Keep-Alive"); 
  con.setRequestProperty("Charset", SystemConfig.DEFAULT_CHARACTER_ENCODING); 
  // 設(shè)置邊界 
  String boundary = "----------" + System.currentTimeMillis(); 
  con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); 
  // 請(qǐng)求正文信息 
  // 第一部分 
  output = new DataOutputStream(con.getOutputStream()); 
  IOUtils.write(("--" + boundary + "\r\n").getBytes(SystemConfig.DEFAULT_CHARACTER_ENCODING), output); 
  IOUtils.write(("Content-Disposition: form-data;name=\"media\"; filename=\"" + file.getName() + "\"\r\n") 
    .getBytes(), output); 
  IOUtils.write("Content-Type: video/mp4 \r\n\r\n".getBytes(), output); 
  // 文件正文部分 
  // 把文件已流文件的方式 推入到url中 
  inputStream = new DataInputStream(new FileInputStream(file)); 
  IOUtils.copy(inputStream, output); 
  // 結(jié)尾部分 
  IOUtils.write(("--" + boundary + "\r\n").getBytes(SystemConfig.DEFAULT_CHARACTER_ENCODING), output); 
  IOUtils.write("Content-Disposition: form-data; name=\"description\";\r\n\r\n" 
    .getBytes(SystemConfig.DEFAULT_CHARACTER_ENCODING), output); 
  IOUtils.write(("{\"title\":\"" + title + "\",\"introduction\":\"" + introduction + "\"}") 
    .getBytes(SystemConfig.DEFAULT_CHARACTER_ENCODING), output); 
  IOUtils.write(("\r\n--" + boundary + "--\r\n\r\n").getBytes(SystemConfig.DEFAULT_CHARACTER_ENCODING), 
    output); 
  output.flush(); 
  result = inputStreamToString(con.getInputStream()); 
 } catch (MalformedURLException e) { 
  e.printStackTrace(); 
 } catch (ProtocolException e) { 
  e.printStackTrace(); 
 } catch (IOException e) { 
  throw new IOException("read data error"); 
 } finally { 
  IOUtils.closeQuietly(output); 
  IOUtils.closeQuietly(inputStream); 
 } 
 return result; 
} 
 
/** 
 * 上傳Video媒體文件(網(wǎng)絡(luò)) 
 * 
 * @param method 
 *   請(qǐng)求方法 GET/POST 
 * @param path 
 *   api的路徑 
 * @param param 
 *   api參數(shù) 
 * @param mediaPath 
 *   待上傳的voide 的path 
 * @param title 
 *   視頻標(biāo)題 
 * @param introduction 
 *   視頻描述 
 * @param connTime 
 *   連接時(shí)間 默認(rèn)為5000 
 * @param readTime 
 *   讀取時(shí)間 默認(rèn)為5000 
 * @return 
 * @throws Exception 
 */ 
public static String HttpsUploadVideoMedia(String method, String path, Map<String, String> param, String mediaPath, 
  String title, String introduction, int connTime, int readTime) throws Exception { 
 String result = null; 
 URL url = new URL(setParmas(param, path, "")); 
 OutputStream output = null; 
 BufferedInputStream inputStream = null; 
 try { 
  String boundary = "----"; 
  HttpURLConnection conn = getConnection(method, url); 
  conn.setConnectTimeout(connTime == 0 ? DEFAULT_CONNTIME : connTime); 
  conn.setReadTimeout(readTime == 0 ? DEFAULT_UPLOAD_READTIME : readTime); 
  conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); 
  output = conn.getOutputStream(); 
  URL mediaUrl = new URL(mediaPath); 
  if (mediaUrl != null) { 
   HttpURLConnection mediaConn = (HttpURLConnection) mediaUrl.openConnection(); 
   mediaConn.setDoOutput(true); 
   mediaConn.setUseCaches(false); 
   mediaConn.setRequestMethod(SystemConfig.GET_METHOD); 
   mediaConn.setConnectTimeout(connTime == 0 ? DEFAULT_CONNTIME : connTime); 
   mediaConn.setReadTimeout(readTime == 0 ? DEFAULT_UPLOAD_READTIME : readTime); 
   IOUtils.write(("--" + boundary + "\r\n").getBytes(), output); 
   IOUtils.write(("Content-Disposition: form-data; name=\"media\"; filename=\"" + getFileName(mediaPath) 
     + "\"\r\n").getBytes(), output); 
   IOUtils.write("Content-Type: video/mp4 \r\n\r\n".getBytes(), output); 
   inputStream = new BufferedInputStream(mediaConn.getInputStream()); 
   IOUtils.copy(inputStream, output); 
   // 結(jié)尾部分 
   IOUtils.write(("--" + boundary + "\r\n").getBytes(SystemConfig.DEFAULT_CHARACTER_ENCODING), output); 
   IOUtils.write("Content-Disposition: form-data; name=\"description\";\r\n\r\n" 
     .getBytes(SystemConfig.DEFAULT_CHARACTER_ENCODING), output); 
   IOUtils.write(("{\"title\":\"" + title + "\",\"introduction\":\"" + introduction + "\"}") 
     .getBytes(SystemConfig.DEFAULT_CHARACTER_ENCODING), output); 
   IOUtils.write(("\r\n--" + boundary + "--\r\n\r\n").getBytes(SystemConfig.DEFAULT_CHARACTER_ENCODING), 
     output); 
   mediaConn.disconnect(); 
   // 獲取輸入流 
   result = inputStreamToString(conn.getInputStream()); 
  } 
 } catch (MalformedURLException e) { 
  e.printStackTrace(); 
 } catch (ProtocolException e) { 
  e.printStackTrace(); 
 } catch (IOException e) { 
  throw new IOException("read data error"); 
 } finally { 
  IOUtils.closeQuietly(output); 
  IOUtils.closeQuietly(inputStream); 
 } 
 return result; 
} 

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解MySQL事務(wù)日志undo log

    詳解MySQL事務(wù)日志undo log

    眾所周知,事務(wù)的一大特點(diǎn)是原子性,即同一事務(wù)的SQL要同時(shí)成功或者失敗,那大家有沒有想過在MySQL的innoDB存儲(chǔ)引擎中是如何保證這樣的原子性操作的,接下來就帶大家一探究竟,感興趣的小伙伴和小編一起來探討吧
    2023-07-07
  • @RefreshScope在Quartz 觸發(fā)器類導(dǎo)致異常問題解決分析

    @RefreshScope在Quartz 觸發(fā)器類導(dǎo)致異常問題解決分析

    這篇文章主要為大家介紹了@RefreshScope在Quartz 觸發(fā)器類導(dǎo)致異常問題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • java中靜態(tài)導(dǎo)入機(jī)制用法實(shí)例詳解

    java中靜態(tài)導(dǎo)入機(jī)制用法實(shí)例詳解

    這篇文章主要介紹了java中靜態(tài)導(dǎo)入機(jī)制用法實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • 了解JAVA Future類

    了解JAVA Future類

    Future是并發(fā)編程中的一種設(shè)計(jì)模式,F(xiàn)uture它代表一個(gè)異步計(jì)算的結(jié)果,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面小編和大家來一起學(xué)習(xí)一下吧
    2019-06-06
  • Spring如何使用通知?Advice?管理事務(wù)

    Spring如何使用通知?Advice?管理事務(wù)

    Spring 默認(rèn)采用聲明式事務(wù)管理(通過配置的方式) ,也可以實(shí)現(xiàn)編程式事務(wù)管理,這篇文章主要介紹了Spring使用通知Advice管理事務(wù),需要的朋友可以參考下
    2023-06-06
  • Spring AOP實(shí)現(xiàn)權(quán)限檢查的功能

    Spring AOP實(shí)現(xiàn)權(quán)限檢查的功能

    這篇文章主要介紹了Spring AOP實(shí)現(xiàn)權(quán)限檢查的功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • java 代碼中預(yù)防空指針異常的處理辦法

    java 代碼中預(yù)防空指針異常的處理辦法

    個(gè)人在做項(xiàng)目時(shí),對(duì)NullPointerException的幾點(diǎn)總結(jié),請(qǐng)網(wǎng)友拍磚?。?!多多提意見,
    2013-03-03
  • Java中處理金額計(jì)算之使用Long還是BigDecimal詳解

    Java中處理金額計(jì)算之使用Long還是BigDecimal詳解

    在Java后端開發(fā)中處理與錢有關(guān)的業(yè)務(wù)時(shí),確保金額計(jì)算的準(zhǔn)確性和避免錯(cuò)誤非常重要,這篇文章主要給大家介紹了關(guān)于Java中處理金額計(jì)算之使用Long還是BigDecimal的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • JAVA多線程實(shí)現(xiàn)的四種方式及使用場(chǎng)景詳解

    JAVA多線程實(shí)現(xiàn)的四種方式及使用場(chǎng)景詳解

    這篇文章主要介紹了JAVA多線程實(shí)現(xiàn)的四種方式及使用場(chǎng)景,并舉例說明了在管理系統(tǒng)中多線程的應(yīng)用場(chǎng)景,如數(shù)據(jù)導(dǎo)入導(dǎo)出、數(shù)據(jù)緩存更新、并發(fā)用戶操作處理、系統(tǒng)監(jiān)控和定時(shí)任務(wù)執(zhí)行,需要的朋友可以參考下
    2025-01-01
  • List集合中對(duì)數(shù)據(jù)實(shí)現(xiàn)多重規(guī)則進(jìn)行排序的案例

    List集合中對(duì)數(shù)據(jù)實(shí)現(xiàn)多重規(guī)則進(jìn)行排序的案例

    今天小編就為大家分享一篇關(guān)于List集合中對(duì)數(shù)據(jù)實(shí)現(xiàn)多重規(guī)則進(jìn)行排序的案例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評(píng)論

靖边县| 江门市| 黄龙县| 错那县| 崇礼县| 中卫市| 固镇县| 庆云县| 宜良县| 固始县| 鄄城县| 茶陵县| 玛纳斯县| 襄垣县| 泗洪县| 屯昌县| 涞水县| 永新县| 绍兴县| 吉安市| 黑龙江省| 武鸣县| 华宁县| 浦城县| 潜山县| 临汾市| 山东省| 前郭尔| 阳原县| 白朗县| 玉林市| 珲春市| 化隆| 沙湾县| 老河口市| 内江市| 长治县| 射洪县| 平定县| 宜州市| 霸州市|