httpclient上傳檔案亂碼

來源:互聯網
上載者:User

標籤: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上傳檔案亂碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.