站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题百分求解如何把一个中文名的文件传到服务器上!

百分求解如何把一个中文名的文件传到服务器上!

摘要: 百分求解如何把一个中文名的文件传到服务器上!


我现在用下面的方法可以把文件传上去,但是文件在服务器上看是“?”号,可能是不支持中文。
不过我把他下载到本地就成了一排下划线。
其中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;
}


你把文件页面的编码变成GBK.
filename = URLEncoder.encode(filename,"UTF-8");/*把filename按UTF-8编码,这里filename可以是中文*/
filename = URLEncoder.decode(filename,"UTF-8");/*把utf-8编码的字符串解码成对应中文*/



但是我们页面要求是UTF-8的怎么办
还有就是这2条命令是一个写在页面一个写在java类里吗?


我查了下api 原来是java包中的类!~我先研究一下,ok后结分


Sunny319(努力学习java中.) 正解


我想问下我这个问题是出在读参数的时候还是把文件传到服务器的过程中的出现的问题


在url传递中文参数前就应该用filename = URLEncoder.encode(filename,"UTF-8");进行编码
你在google上搜索一些中文东西,比如就"中文111"!
地址栏就是:http://www.google.com/search?hl=zh-CN&newwindow=1&q=%E4%B8%AD%E6%96%87111&btnG=%E6%90%9C%E7%B4%A2&lr=
他的中文就被编码成UTF8的格式了%..



传到服务器上看是??正常,下载下来后变成_符号
查看下下载页面的编码是否和上传文件的编码一样


一定要编码一致


up jf


smartupload 帮你解决中文上传问题


谢谢大家了~不过按上面的方法没做出来,可能我笨了点!
所以想了一个笨点的方法就是把取路径哪给避开,直接从上传文件后就获得他返回来的路径就没有匹配路径这一步了。没想到还让我蒙对了。
还是要谢谢大家的,分照给,来着有分。


↑返回目录
前一篇: 关于怎样保密自己的images文件的问题
后一篇: "求一个jsp页面里调用qq对话框的方法和代码"