HttpClient 学习整理
2014-08-07 16:25
507 查看
先利用上传文件组件,把要上传的文件存入到一个临时路径,然后把临时路径的传递到uploadSingle(String sourceFile, String appId)方法中
/注:String 类型的sourceFile就是传的临时路径,appId是上传到服务器区域的唯一标示
利用HttpClient以post形式上传文件,删除文件
/注: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 block e.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.jpg String 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; } }
相关文章推荐
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理(转)
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理
- HttpClient 学习整理