使用httpclient上傳檔案,檔名是中文,需要設定http為相容模式,否則會使用mime預設的編碼(us-ascii),中文檔名就亂碼了,原始碼分析如下。
瀏覽器相容模式 (設定的charset)(utf-8),檔名正常
編碼過程如下:
private static void writebytes(
final string s, final charset charset, final outputstream out) throws ioexception
protected static void writefield(
final minimalfield field, final charset charset, final outputstream out) throws ioexception
結果:--mfdxeyyxysuouufmpq2yjojbk0_qgr8z4v
content-disposition: form-data; name="uploadfile2"; filename="中文.mp4"
瀏覽器嚴格模式 mime.default_charset (us-ascii),檔名亂碼了
編碼過程如下:
private static void writebytes(
final string s, final outputstream out) throws ioexception
protected static void writefield(
final minimalfield field, final outputstream out) throws ioexception
結果 --k8ni5k102llgw3ez5ktsimna3lmr5tb8fpe_e
content-disposition: form-data; name="uploadfile2"; filename="??.mp4"
content-type: video/mp4
content-transfer-encoding: binary
設定方法:
關於Multipart上傳文章的簡單描述
使用multipartfile上傳檔案的時候 幾點注意事項 第一種使用submit form表單上傳方式 1.在form表單中需要加 enctype multipart form data 2.上傳檔案的名稱也要標記 如 name file 3.form表單的提交方式必須使用post方式提交,如果使...
File實現檔案上傳
upload.html 1 表單 action 上傳檔案的後台介面 method post enctype multipart form data 檔案輸出框 準備servlet url一定要與上面的表單action保持一致 編寫後台 實現檔案上傳 try catch exception ex 準備...
HttpClient之Multipart上傳檔案
multipart的具體含義可參考博文,或者rfc2046,httpclient提供的multipartentitybuilder類是對此規範的具體實現。如下圖所示,最重要的屬性有三個 每個part的具體實現類,同樣包含三個重要屬性 contentbody表示part中具體的資料,如下圖所示有四個實...