package cn.com.sinosoft.wechat.utils;
import java.io.File;
import java.io.IOException;
import java.util.Map;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.CloseableHttpClient;
/**
* 上传下载文件
* @User: Jason
* @Time:2017-8-18下午1:51:56
*
*/
public class MultipartUtils extends HttpClientUtils {
public static String formUpload(String url, Map<String, Object> param, String method){
return formUpload(url, param, method) ;
}
/**
* 新增临时素材
* 公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。
* 素材管理接口对所有认证的订阅号和服务号开放。通过本接口,公众号可以新增临时素材(即上传临时多媒体文件)。
* 注意点:
* 1、临时素材media_id是可复用的。
* 2、媒体文件在微信后台保存时间为3天,即3天后media_id失效。
* 3、上传临时素材的格式、大小限制与公众平台官网一致。
* 图片(image): 2M,支持PNG\JPEG\JPG\GIF格式
* 语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
* 视频(video):10MB,支持MP4格式
* 缩略图(thumb):64KB,支持JPG格式
* 4、需使用https调用本接口。
* 注:支持别的上传需要扩展
* @param url
* @param filePath 文件路径
* @param method
* @return
*/
public static String formUpload(String url, String filePath, String method){
return uploadHttps(url, filePath, getHttpClientInstance().build()) ;
}
protected static String upload(String url, Map<String, Object> map){
return null ;
}
protected static String uploadHttps(String url, String filePath, CloseableHttpClient httpClient){
HttpPost httpPost = new HttpPost(url);
String retStr = null;
try {
// 设置文件参数
FileBody fileBoday = new FileBody(new File(filePath));
// 创建上传对象multip
MultipartEntityBuilder multip = MultipartEntityBuilder.create();
// 设置上传的数据
multip.addPart("media", fileBoday);
// 设置text 数据
// StringBody stringBody = new StringBody("A binary file of some kind", ContentType.TEXT_PLAIN); ;
// multip.addTextBody("data", "测试上传是否成功") ;
// multip.addPart("comment", stringBody);
httpPost.setEntity(multip.build());
CloseableHttpResponse response = httpClient.execute(httpPost);
if(check(response)){
retStr = retMsg(response);
}
close(httpClient, response);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return retStr ;
}
public static boolean download(String url, String filePath, String fileName){
return false ;
}
}