关于uploadify.swf插件上传文件乱码问题

uploadify.swf插件是一个比较好用的前端附件上传的插件,但是无奈中文乱码太烦了,现在分享一下项目过程中处理乱码问题。

1、在js代码中定义的onUploadStart方法中自定义一个参数传递到post参数中:

'onUploadStart': function (file) {
         this.setPostParams({fileName: encodeURIComponent(file.name)});
}

2、在java后台接受时通过解码

String fileName = request.getParameter("fileName")!=null?request.getParameter("fileName"):"";

fileName = URLDecoder.decode(fileName, "UTF-8");

在接下来的代码中有用到上传文件的名字时就使用fileName属性替换

附完成js

//上传附件控件显示
    $("#uploadify").uploadify({
        'buttonText' : '浏览...',
        'uploader' : url,
        'swf'        : '/public/js/upload/uploadify.swf',
        'queueID' : 'fileQueue',
        fileTypeExts:'${filterExt}',
        fileTypeDesc:'请选择文件',
        'auto' : false ,
        'fileObjName' : 'myFile' ,      
        'fileSizeLimit' : '${queueSizeLimit}MB',
        'queueSizeLimit':'${fileSizeLimit}',
        'multi' : true, 
        'method' : 'post',
        'onUploadSuccess':function(file, data, response)
        {
            var js = "var dataJson = "+data+";";
            returnMsg = returnMsg+data+",";
            eval(js);
            if(dataJson.success)
            {
                if(dataJson.result.length>0)
                {
                    uploadOkFiles[uploadOkFiles.length]=dataJson.result[0];
                }
            }
        },
        'onUploadStart': function (file) {
               this.setPostParams({fileName: encodeURIComponent(file.name)});
         }, 
         'onQueueComplete' : function(queueData) {  
            alert('成功上传了'+queueData.uploadsSuccessful+'个文件');
            window.returnValue = returnMsg;
            window.close();
        },
        'queueID':'some_file_queue',
        //检测FLASH失败调用 
        'onFallback':function(){ 
            alert('您未安装FLASH控件,无法上传文件!请安装FLASH控件后再试。');
        },
        'overrideEvents' : [ 'onDialogClose', 'onUploadError', 'onSelectError'],
        //返回一个错误,选择文件的时候触发
       'onSelectError':function(file, errorCode, errorMsg){
           switch(errorCode) {
               case -100:
                   alert('上传的文件数量已经超出系统限制的'+$('#uploadify').uploadify('settings','queueSizeLimit')+'个文件!');
                   break;
               case -110:
                   alert('文件 ['+file.name+'] 大小超出系统限制的'+$('#uploadify').uploadify('settings','fileSizeLimit')+'大小!');
                   break;
               case -120:
                   alert('文件 ['+file.name+'] 大小异常!');
                   break;
               case -130:
                   alert('文件 ['+file.name+'] 类型不正确!');
                   break;
           }
       },
       'onUploadError':uploadify_onUploadError
    });

猜你喜欢

转载自blog.csdn.net/qq_26702601/article/details/81286345