標籤:style blog http io ar color os sp java
String targetUrl = "http://localhost:8080/Test"; PostMethod filePost = new PostMethod(targetUrl) {//這個用來中文亂碼 public String getRequestCharSet() { return "UTF-8";// } }; try { HttpClient client = new HttpClient(); File file = new File("c:/新聞.xml"); Part[] parts = new Part[] {new CustomFilePart(file.getName(), file)}; filePost.setRequestEntity(new MultipartRequestEntity(parts, filePost.getParams())); int statuscode=client.executeMethod(filePost); if(statuscode == HttpStatus.SC_OK) { System.out.println("添加檔案成功"); } else { System.out.println("添加檔案失敗"); } } catch (Exception ex) { ex.printStackTrace(); }
import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; import org.apache.commons.httpclient.methods.multipart.FilePart; import org.apache.commons.httpclient.util.EncodingUtil; /** *解決中文檔案名稱亂碼 */ public class CustomFilePart extends FilePart { public CustomFilePart(String filename, File file) throws FileNotFoundException { super(filename, file); } protected void sendDispositionHeader(OutputStream out) throws IOException { super.sendDispositionHeader(out); String filename = getSource().getFileName(); if (filename != null) { out.write(EncodingUtil.getAsciiBytes(FILE_NAME)); out.write(QUOTE_BYTES); out.write(EncodingUtil.getBytes(filename, "utf-8")); out.write(QUOTE_BYTES); } } }
File tempfile = new File(System.getProperty("java.io.tmpdir")); // 採用系統臨時檔案目錄 DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory(); diskFileItemFactory.setSizeThreshold(4096); // 設定緩衝區大小,這裡是4kb diskFileItemFactory.setRepository(tempfile); // 設定緩衝區目錄 ServletFileUpload fu = new ServletFileUpload(diskFileItemFactory); fu.setSizeMax(4194304); // 限制檔案大小最大為4M List fileItems = fu.parseRequest(request); Iterator i = fileItems.iterator(); while (i.hasNext()) { FileItem fi = (FileItem) i.next(); String fileName = fi.getName(); if (fileName != null) { File fullFile = new File(fi.getName()); File savedFile = new File(uploadPath, fullFile.getName()); fi.write(savedFile); } } System.out.println("upload succeed");
httpclient上傳檔案亂碼