HttpClient 学习整理

来源:互联网 发布:2017soda开放数据大赛 编辑:程序博客网 时间:2024/05/17 08:54
先利用上传文件组件,把要上传的文件存入到一个临时路径,然后把临时路径的传递到uploadSingle(String sourceFile, String appId)方法中
/注:String 类型的sourceFile就是传的临时路径,appId是上传到服务器区域的唯一标示
// 临时保存上传的附件public void saveMediaData(FileUploadEvent event) {MediaStoreConfiguration msc = AirScapeApplicationContext.getBean("MediaStoreConfig", MediaStoreConfiguration.class);//String module = msc.getValue("ms.emall.module.global");System.out.println(event.getFile().getFileName());String filename = event.getFile().getFileName();String surffix = "." + FilenameUtils.getExtension(filename);//String mtype = event.getFile().getContentType();if (mediaService.ifMediaDataExists(MallConstant.EMALL_APP_ID, filename)){FacesContext.getCurrentInstance().addMessage(null,new FacesMessage(FacesMessage.SEVERITY_INFO, "File Exists!" + filename, ""));return;}File file;String url;String tmpName = String.valueOf(System.currentTimeMillis());try {file = File.createTempFile(tmpName,surffix);//创建一个文件默认存到临时目录下的FileUtils.copyInputStreamToFile(event.getFile().getInputstream(),file);//把要上传的文件存入到file文件中log.debug(file.getAbsolutePath());log.debug(file.getName());url = MediaKit.uploadSingle(file.getAbsolutePath(), MallConstant.EMALL_APP_ID);//上传到服务器之后,,服务器返回一个url,可以通过                        //输入浏览器地址来访问到上传到服务器的文件(各种类型)                        file.delete();//把临时文件删除//下面就是把这个文件封住成MediaData类存入到数据库中。。。。。。。。。。。。。。。。。。MediaData md = new MediaData();md.setModule(MallConstant.EMALL_APP_ID);md.setName(filename);md.setMimeType(surffix);md.setUrl(url);boolean result = mediaService.saveNewMedia(md);if (result) {FacesContext.getCurrentInstance().addMessage(null,new FacesMessage(FacesMessage.SEVERITY_INFO, "Success!" + filename, ""));} else {FacesContext.getCurrentInstance().addMessage(null,new FacesMessage(FacesMessage.SEVERITY_INFO, "Failed!" + filename,""));}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}


利用HttpClient以post形式上传文件,删除文件

package cn.common.util;import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map;import java.util.Scanner;import java.util.TreeMap;import java.util.regex.MatchResult;import org.apache.commons.codec.DecoderException;import org.apache.commons.codec.EncoderException;import org.apache.commons.codec.net.URLCodec;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpStatus;import org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.methods.PostMethod;import org.apache.commons.httpclient.methods.multipart.FilePart;import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;import org.apache.commons.httpclient.methods.multipart.Part;import org.apache.commons.httpclient.methods.multipart.StringPart;import org.apache.commons.httpclient.params.HttpConnectionParams;import org.apache.commons.io.FilenameUtils;import org.apache.commons.lang.StringUtils;public class MediaKit {public static final Map<String, String> MIME_TYPES = new HashMap<String, String>();public static final String DEFAULT_MIME_TYPE = "*";public static final String DEFAULT_CODEC_CHARSET = "UTF-8";public static final String MEDIA_PATTERN = "(\\w{8})(\\d{4})(\\d{2})(\\d{2})(.*)";public static final String MEDIA_APP = "APPNAME";public static final String MEDIA_KEY = "KEY";public static final String MEDIA_YEAR = "YEAR";public static final String MEDIA_MONTH = "MONTH";public static final String MEDIA_DAY = "DAY";public static final String MEDIA_FILENAME = "FILE";public static final String MEDIA_FILE_EXTENTION = "EXTENTION";public static final String MEDIA_PATH = "PATH";public static final String MEDIA_DATE_FMT = "yyyyMMdd";public static final String MEDIA_FILE_FMT = "HHmmssSSS";public static final String MEDIA_PATH_PATTERN = "%s/%s/%s/%s";static {MIME_TYPES.put("*", "application/octet-stream");MIME_TYPES.put("323", "text/h323");MIME_TYPES.put("acx", "application/internet-property-stream");MIME_TYPES.put("ai", "application/postscript");MIME_TYPES.put("aif", "audio/x-aiff");MIME_TYPES.put("aifc", "audio/x-aiff");MIME_TYPES.put("aiff", "audio/x-aiff");MIME_TYPES.put("asf", "video/x-ms-asf");MIME_TYPES.put("asr", "video/x-ms-asf");MIME_TYPES.put("asx", "video/x-ms-asf");MIME_TYPES.put("au", "audio/basic");MIME_TYPES.put("avi", "video/x-msvideo");MIME_TYPES.put("axs", "application/olescript");MIME_TYPES.put("bas", "text/plain");MIME_TYPES.put("bcpio", "application/x-bcpio");MIME_TYPES.put("bin", "application/octet-stream");MIME_TYPES.put("bmp", "image/bmp");MIME_TYPES.put("bz", "application/x-bzip");MIME_TYPES.put("bz2", "application/x-bzip2");MIME_TYPES.put("c", "text/plain");MIME_TYPES.put("cat", "application/vnd.ms-pkiseccat");MIME_TYPES.put("cdf", "application/x-cdf");MIME_TYPES.put("cer", "application/x-x509-ca-cert");MIME_TYPES.put("class", "application/octet-stream");MIME_TYPES.put("clp", "application/x-msclip");MIME_TYPES.put("cmx", "image/x-cmx");MIME_TYPES.put("cod", "image/cis-cod");MIME_TYPES.put("cpio", "application/x-cpio");MIME_TYPES.put("crd", "application/x-mscardfile");MIME_TYPES.put("crl", "application/pkix-crl");MIME_TYPES.put("crt", "application/x-x509-ca-cert");MIME_TYPES.put("csh", "application/x-csh");MIME_TYPES.put("css", "text/css");MIME_TYPES.put("dcr", "application/x-director");MIME_TYPES.put("der", "application/x-x509-ca-cert");MIME_TYPES.put("dir", "application/x-director");MIME_TYPES.put("dll", "application/x-msdownload");MIME_TYPES.put("dms", "application/octet-stream");MIME_TYPES.put("doc", "application/msword");MIME_TYPES.put("dot", "application/msword");MIME_TYPES.put("dvi", "application/x-dvi");MIME_TYPES.put("dxr", "application/x-director");MIME_TYPES.put("eps", "application/postscript");MIME_TYPES.put("etx", "text/x-setext");MIME_TYPES.put("evy", "application/envoy");MIME_TYPES.put("exe", "application/octet-stream");MIME_TYPES.put("fif", "application/fractals");MIME_TYPES.put("flr", "x-world/x-vrml");MIME_TYPES.put("gif", "image/gif");MIME_TYPES.put("gtar", "application/x-gtar");MIME_TYPES.put("gz", "application/x-gzip");MIME_TYPES.put("h", "text/plain");MIME_TYPES.put("hdf", "application/x-hdf");MIME_TYPES.put("hlp", "application/winhlp");MIME_TYPES.put("hqx", "application/mac-binhex40");MIME_TYPES.put("hta", "application/hta");MIME_TYPES.put("htc", "text/x-component");MIME_TYPES.put("htm", "text/html");MIME_TYPES.put("html", "text/html");MIME_TYPES.put("htt", "text/webviewhtml");MIME_TYPES.put("ico", "image/x-icon");MIME_TYPES.put("ief", "image/ief");MIME_TYPES.put("iii", "application/x-iphone");MIME_TYPES.put("ins", "application/x-internet-signup");MIME_TYPES.put("isp", "application/x-internet-signup");MIME_TYPES.put("jfif", "image/pipeg");MIME_TYPES.put("jpe", "image/jpeg");MIME_TYPES.put("jpeg", "image/jpeg");MIME_TYPES.put("jpg", "image/jpeg");MIME_TYPES.put("js", "application/x-javascript");MIME_TYPES.put("latex", "application/x-latex");MIME_TYPES.put("lha", "application/octet-stream");MIME_TYPES.put("lsf", "video/x-la-asf");MIME_TYPES.put("lsx", "video/x-la-asf");MIME_TYPES.put("lzh", "application/octet-stream");MIME_TYPES.put("m13", "application/x-msmediaview");MIME_TYPES.put("m14", "application/x-msmediaview");MIME_TYPES.put("m3u", "audio/x-mpegurl");MIME_TYPES.put("man", "application/x-troff-man");MIME_TYPES.put("mdb", "application/x-msaccess");MIME_TYPES.put("me", "application/x-troff-me");MIME_TYPES.put("mht", "message/rfc822");MIME_TYPES.put("mhtml", "message/rfc822");MIME_TYPES.put("mid", "audio/mid");MIME_TYPES.put("mny", "application/x-msmoney");MIME_TYPES.put("mov", "video/quicktime");MIME_TYPES.put("movie", "video/x-sgi-movie");MIME_TYPES.put("mp2", "video/mpeg");MIME_TYPES.put("mp3", "audio/mpeg");MIME_TYPES.put("mpa", "video/mpeg");MIME_TYPES.put("mpe", "video/mpeg");MIME_TYPES.put("mpeg", "video/mpeg");MIME_TYPES.put("mpg", "video/mpeg");MIME_TYPES.put("mpp", "application/vnd.ms-project");MIME_TYPES.put("mpv2", "video/mpeg");MIME_TYPES.put("ms", "application/x-troff-ms");MIME_TYPES.put("mvb", "application/x-msmediaview");MIME_TYPES.put("nws", "message/rfc822");MIME_TYPES.put("oda", "application/oda");MIME_TYPES.put("p10", "application/pkcs10");MIME_TYPES.put("p12", "application/x-pkcs12");MIME_TYPES.put("p7b", "application/x-pkcs7-certificates");MIME_TYPES.put("p7c", "application/x-pkcs7-mime");MIME_TYPES.put("p7m", "application/x-pkcs7-mime");MIME_TYPES.put("p7r", "application/x-pkcs7-certreqresp");MIME_TYPES.put("p7s", "application/x-pkcs7-signature");MIME_TYPES.put("pbm", "image/x-portable-bitmap");MIME_TYPES.put("pdf", "application/pdf");MIME_TYPES.put("pfx", "application/x-pkcs12");MIME_TYPES.put("pgm", "image/x-portable-graymap");MIME_TYPES.put("pko", "application/ynd.ms-pkipko");MIME_TYPES.put("pma", "application/x-perfmon");MIME_TYPES.put("pmc", "application/x-perfmon");MIME_TYPES.put("pml", "application/x-perfmon");MIME_TYPES.put("pmr", "application/x-perfmon");MIME_TYPES.put("pmw", "application/x-perfmon");MIME_TYPES.put("png", "image/png");MIME_TYPES.put("pnm", "image/x-portable-anymap");MIME_TYPES.put("pot,", "application/vnd.ms-powerpoint");MIME_TYPES.put("ppm", "image/x-portable-pixmap");MIME_TYPES.put("pps", "application/vnd.ms-powerpoint");MIME_TYPES.put("ppt", "application/vnd.ms-powerpoint");MIME_TYPES.put("prf", "application/pics-rules");MIME_TYPES.put("ps", "application/postscript");MIME_TYPES.put("pub", "application/x-mspublisher");MIME_TYPES.put("qt", "video/quicktime");MIME_TYPES.put("ra", "audio/x-pn-realaudio");MIME_TYPES.put("ram", "audio/x-pn-realaudio");MIME_TYPES.put("ras", "image/x-cmu-raster");MIME_TYPES.put("rgb", "image/x-rgb");MIME_TYPES.put("rm", "application/vnd.rn-realmedia");MIME_TYPES.put("rmi", "audio/mid");MIME_TYPES.put("roff", "application/x-troff");MIME_TYPES.put("rtf", "application/rtf");MIME_TYPES.put("rtx", "text/richtext");MIME_TYPES.put("scd", "application/x-msschedule");MIME_TYPES.put("sct", "text/scriptlet");MIME_TYPES.put("setpay", "application/set-payment-initiation");MIME_TYPES.put("setreg", "application/set-registration-initiation");MIME_TYPES.put("sh", "application/x-sh");MIME_TYPES.put("shar", "application/x-shar");MIME_TYPES.put("sit", "application/x-stuffit");MIME_TYPES.put("snd", "audio/basic");MIME_TYPES.put("spc", "application/x-pkcs7-certificates");MIME_TYPES.put("spl", "application/futuresplash");MIME_TYPES.put("src", "application/x-wais-source");MIME_TYPES.put("sst", "application/vnd.ms-pkicertstore");MIME_TYPES.put("stl", "application/vnd.ms-pkistl");MIME_TYPES.put("stm", "text/html");MIME_TYPES.put("svg", "image/svg+xml");MIME_TYPES.put("sv4cpio", "application/x-sv4cpio");MIME_TYPES.put("sv4crc", "application/x-sv4crc");MIME_TYPES.put("swf", "application/x-shockwave-flash");MIME_TYPES.put("t", "application/x-troff");MIME_TYPES.put("tar", "application/x-tar");MIME_TYPES.put("tcl", "application/x-tcl");MIME_TYPES.put("tex", "application/x-tex");MIME_TYPES.put("texi", "application/x-texinfo");MIME_TYPES.put("texinfo", "application/x-texinfo");MIME_TYPES.put("tgz", "application/x-compressed");MIME_TYPES.put("tif", "image/tiff");MIME_TYPES.put("tiff", "image/tiff");MIME_TYPES.put("tr", "application/x-troff");MIME_TYPES.put("trm", "application/x-msterminal");MIME_TYPES.put("tsv", "text/tab-separated-values");MIME_TYPES.put("txt", "text/plain");MIME_TYPES.put("uls", "text/iuls");MIME_TYPES.put("ustar", "application/x-ustar");MIME_TYPES.put("vcf", "text/x-vcard");MIME_TYPES.put("vrml", "x-world/x-vrml");MIME_TYPES.put("wav", "audio/x-wav");MIME_TYPES.put("wcm", "application/vnd.ms-works");MIME_TYPES.put("wdb", "application/vnd.ms-works");MIME_TYPES.put("wks", "application/vnd.ms-works");MIME_TYPES.put("wmf", "application/x-msmetafile");MIME_TYPES.put("wps", "application/vnd.ms-works");MIME_TYPES.put("wri", "application/x-mswrite");MIME_TYPES.put("wrl", "x-world/x-vrml");MIME_TYPES.put("wrz", "x-world/x-vrml");MIME_TYPES.put("x-png", "image/png");MIME_TYPES.put("xaf", "x-world/x-vrml");MIME_TYPES.put("xbm", "image/x-xbitmap");MIME_TYPES.put("xla", "application/vnd.ms-excel");MIME_TYPES.put("xlc", "application/vnd.ms-excel");MIME_TYPES.put("xlm", "application/vnd.ms-excel");MIME_TYPES.put("xls", "application/vnd.ms-excel");MIME_TYPES.put("xlt", "application/vnd.ms-excel");MIME_TYPES.put("xlw", "application/vnd.ms-excel");MIME_TYPES.put("xof", "x-world/x-vrml");MIME_TYPES.put("xpm", "image/x-xpixmap");MIME_TYPES.put("xwd", "image/x-xwindowdump");MIME_TYPES.put("z", "application/x-compress");MIME_TYPES.put("zip", "application/zip");};public synchronized static String getMimeType(String surffix) {String val = MIME_TYPES.get(surffix);if (null != val) {return val;}return MIME_TYPES.get(DEFAULT_MIME_TYPE);}public static boolean checkMediaKey(String mediaKey) {String val = CryptoKit.decode(mediaKey);System.out.println("decode result:" + val);String path = FilenameUtils.getPath(val);String name = FilenameUtils.getName(val);if (null == path || null == name || path.isEmpty() || name.isEmpty())return false;return true;}public static boolean parseMediaKey(String mediaKey,Map<String, String> result) {Scanner scanner = new Scanner(mediaKey);while (scanner.hasNext(MEDIA_PATTERN)) {scanner.next(MEDIA_PATTERN);MatchResult match = scanner.match();String app = match.group(1);result.put(MEDIA_APP, app);String year = match.group(2);result.put(MEDIA_YEAR, year);String month = match.group(3);result.put(MEDIA_MONTH, month);String day = match.group(4);result.put(MEDIA_DAY, day);String file = match.group(5);result.put(MEDIA_FILENAME, file);result.put(MEDIA_PATH,String.format(MEDIA_PATH_PATTERN, app, year, month, day));result.put(MEDIA_FILE_EXTENTION, FilenameUtils.getExtension(file));scanner.close();return true;}scanner.close();return false;} public static String URLEncode(String data) {URLCodec codec = new URLCodec(DEFAULT_CODEC_CHARSET);try {return codec.encode(data);} catch (EncoderException e) {e.printStackTrace();}return "";}public static String URLDecode(String data) {URLCodec codec = new URLCodec(DEFAULT_CODEC_CHARSET);try {return codec.decode(data);} catch (DecoderException e) {e.printStackTrace();}return "";}public static String generateMediaKey(String appId,Date date, String fileName) {SimpleDateFormat sdf = new SimpleDateFormat(MEDIA_DATE_FMT);String date1 = sdf.format(date);String key = appId + date1 + fileName;System.out.println(key);return URLEncode(CryptoKit.encode(key));}public static void main (String args[]) {String key = generateMediaKey("a1b2c3d4", new Date(), "asdfasd.jpg");System.out.println(key);Map<String,String> map = new TreeMap<String, String>();parseMediaKey(key, map);System.out.println(map);}/** * 通过httpClient上传文件 *  * @param source *            文件对象 * @param fileName *            上传后保存的文件名称 * @param pathIdentity *            唯一性标识(用于隔离应用和模块) * @return */public static String uploadSingle(String sourceFile, String appId) {MediaConfiguration config = AirScapeApplicationContext.getBean("MediaConfig", MediaConfiguration.class);String upUrl = config.getUploadUrl();//String downUrl = config.getDownloadUrl();String path = sourceFile;String name = FilenameUtils.getName(path);String surffix = FilenameUtils.getExtension(path);//String appId = app2ModuleId;// System.out.println("Name:" + name);File file = new File(path);if (!(file.exists() && file.isFile() && file.canRead())) {return null;}HttpClient httpClient = new HttpClient();// httpClient.getParams().setCookiePolicy(CookiePolicy.RFC_2109);httpClient.getParams().setIntParameter(HttpConnectionParams.SO_TIMEOUT,50000);PostMethod postMethod = new PostMethod(upUrl);String key = MediaKit.generateMediaKey(appId, new Date(), name);StringPart part1 = new StringPart(MEDIA_FILENAME, name);StringPart part2 = new StringPart(MEDIA_KEY, key);StringPart part3 = new StringPart(MEDIA_APP, appId);// StringPart part3 = new StringPart(MediaConstant.MEDIA_KEY, key);try {// FilePart:用来上传文件的类FilePart fp = new FilePart(name, file);System.out.println("Mime Type:" + MediaKit.getMimeType(surffix));fp.setContentType(MediaKit.getMimeType(surffix));Part[] parts = { part1, part2, part3, fp };// 对于MIME类型的请求,httpclient建议全用MulitPartRequestEntity进行包装MultipartRequestEntity mre = new MultipartRequestEntity(parts,postMethod.getParams());postMethod.setRequestEntity(mre);// httpClient.getHttpConnectionManager().getParams()// .setConnectionTimeout(50000);// 设置连接时间int status = httpClient.executeMethod(postMethod);System.out.println(status);if (status != HttpStatus.SC_OK) {System.out.println("Upload File Failed with: " + status);} else if (status == HttpStatus.SC_OK) {String durl = postMethod.getResponseBodyAsString();System.out.println("Upload OK, access URL:" + durl);return durl;}} catch (Exception e) {e.printStackTrace();}return null;}public static boolean removeFile(String emallAppId, String url) {MediaConfiguration config = AirScapeApplicationContext.getBean("MediaConfig", MediaConfiguration.class);String rmUrl = config.getRemoveUrl();//String downUrl = config.getDownloadUrl();//http://localhost:8080/images/download.do?APPNAME=EMALL001&KEY=ZKDCaCVbbQGQ%252BApecu%252Fqx1ntsUYDHR8aQ4gBpeLgUW8%253D&FILE=14065411034173946756768873540979.jpgString part1 = url.substring(url.indexOf("?"));//String parts[] = StringUtils.splitByWholeSeparator(part1, "&");rmUrl = rmUrl + part1;System.out.println("Remove URL:"+ rmUrl);HttpClient httpClient = new HttpClient();// httpClient.getParams().setCookiePolicy(CookiePolicy.RFC_2109);httpClient.getParams().setIntParameter(HttpConnectionParams.SO_TIMEOUT,50000);GetMethod getMethod = new GetMethod(rmUrl);//String key = MediaKit.generateMediaKey(emallAppId, new Date(), name);//StringPart part1 = new StringPart(MEDIA_FILENAME, "");//StringPart part2 = new StringPart(MEDIA_KEY, "");//StringPart part3 = new StringPart(MEDIA_APP, "");// StringPart part3 = new StringPart(MediaConstant.MEDIA_KEY, key);try {// httpClient.getHttpConnectionManager().getParams()// .setConnectionTimeout(50000);// 设置连接时间int status = httpClient.executeMethod(getMethod);System.out.println(status);if (status != HttpStatus.SC_OK) {System.out.println("Remove File Failed!");return false;} else if (status == HttpStatus.SC_OK) {System.out.println("Remove File OK");return true;}} catch (Exception e) {e.printStackTrace();}return false;}}

0 0
原创粉丝点击