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); } });