日期:2014-05-20  浏览次数:20833 次

文件上传乱码
开发环境是WIN XP。运行环境是linux SUSE10.

在开发环境跟了下代码,sysFileName 不是乱码;

到linux SUSE10下运行文件名就是乱码了。

加上这句后,sysFileName = new String(sysFileName.getBytes("GBK"), "UTF-8");

开发环境都是乱码了。

Java code

            //由用户输入的名称和创建者的id,扩展名以及时间组合生成文件名
            sysFileName = UpFileEvent.generateSysFileName(fileInitName, operatorId);
            
            //得到指定的上传文件保存后对应的绝对路径 计算方式:配置文件中设置的路径加文件名
            sysFileName=UpFileEvent.getRealPath(sysFileName)

            File file = new File(sysFileName);
            
            wasFileUpload.write(file);




write方法
Java code

/**
     * 将上传的文件写入指定的文件中 
     * 
     * @param file
     * @throws Exception
     */
    public void write(File file) throws CustomException {
        if (fileItem == null) {
            throw new CustomException("fail", "upfileInvalid");
        }
        if (file == null) {
            this.writeToFile();
        } else {
            this.writeFile(file);
        }
    }



------解决方案--------------------
这个我感觉是linux 和XP的编码的不一样
------解决方案--------------------
大多数的做法是 文件名是唯一的你可以用uuid实现 而真实的文件明会用另一个字段来保存的