百分求解如何把一个中文名的文件传到服务器上!
我现在用下面的方法可以把文件传上去,但是文件在服务器上看是“?”号,可能是不支持中文。
不过我把他下载到本地就成了一排下划线。
其中request中包含由页面中提交的一个文件名。(要是中文就不行)
我想在页面用encodeURI 这个方法做编码转换,可能我对这个方法不是很了解,没成功。
还希望明白人指点一下。
public File upload(HttpServletRequest request, String destDir) {
DiskFileUpload diskFileUpload = new DiskFileUpload();
diskFileUpload.setSizeMax(1000 * 1024 * 1024);// 上传文件的最大值
diskFileUpload.setSizeThreshold(4096);// 超过这个限制写到磁盘上
diskFileUpload.setRepositoryPath("/tmp");// 设置存储临时文件的位置
List fileItems;
try {
fileItems = diskFileUpload.parseRequest(request);
} catch (FileUploadException ex) {
ex.printStackTrace();
return null;
}
Iterator iter = fileItems.iterator();
for (; iter.hasNext();) {
FileItem fileItem = (FileItem) iter.next();
if (!fileItem.isFormField()) {
// 从客户端的文件系统通过浏览器传过来的文件名的基础名称.
String fileName = fileItem.getName();
if (fileName.equals(""))
continue;
String[] possibleSeparator = new String[] { "/", "\\" };
for (int i = 0; i < possibleSeparator.length; i++) {
String separator = possibleSeparator[i];
int index = fileName.lastIndexOf(separator);
if (index != -1) {
fileName = fileName.substring(index+ separator.length());
break;
}
}
Runtime rt = Runtime.getRuntime();
try {
File FileObject = new File(destDir + "/" + fileName);
fileItem.write(FileObject);
String[] cmd = new String[3];
cmd[0] = "/bin/bash";
cmd[1] = "-c";
cmd[2] = "chown mailuid:mailgid \"" + destDir + "/"+ fileName + "\"";
rt.exec(cmd);
cmd[2] = "chmod 600 \"" + destDir + "/" + fileName + "\"";
rt.exec(cmd);
return FileObject;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
}
return null;
}