Uploadify是個很好的上傳文件組件,但用它來上傳帶有中文名字的文件時,亂碼一個不當心就蹦了出來,最新版本Uploadify v3.2 在用的時候,我頁面是GBK編碼,想到後臺接收的時候確定會亂碼,開始用new String(fileName.getBytes("GBK"),"utf-8");來進行轉碼(後臺用java寫的),開始我測試上傳了幾個中文名稱的文件,很正常,可是客戶那邊用了後,反應文件上傳了找不到,KB的開始調試了,把客戶的文件拿過來作測試,媽了個咪了的竟然出現亂碼了,因而各類搜索,各類調試,沒有見效,搜索結果裏面沒有找到新版本出現這一問題的解決辦法,好吧,本身看看源碼,或許有解決辦法,想到能夠給後臺傳參數,那爲何不能再選中文件的時候把文件名通過js的encodeURI方法進行編碼後臺再來接收,也就是經過定義uploadify的onSelecct(file)方法來獲得文件名,由於onSelecct方法的file參數能夠經過file.name來獲得文件名,我把這個文件名進行編碼後傳給後臺,後臺經過 URLDecoder.decode(fileName, "UTF-8");來解碼,應該是能夠正常顯示的,怎麼把文件名傳到後臺去是個問題,看了下源碼,裏面看到有個addPostParam的方法,大喜,最後我在onSelecct(file)方法裏面寫上 this.addPostParam("file_name",encodeURI(file.name));後臺調試一看,果真能夠獲得,進行解碼後獲得正常文件名,OK,問題解決,
附上完整代碼:html
$('#file_upload').uploadify({ 'formData' : { 'file_type' : "examples" }, 'swf' : ‘jsupload/uploadify.swf'", 'uploader' : "uploadfile.htm", 'buttonText' : "案例上傳", 'width' : "80", 'height' : "25", 'sizeLimit' : "102400", 'onSelect' : function(file) { this.addPostParam("file_name",encodeURI(file.name));//改變文件名的編碼 }, 'onUploadSuccess' : function(file, data, response) { $('.examview').html(data); } });