读书人

fileupload下传中文文件名时乱码有关问

发布时间: 2012-09-27 11:11:17 作者: rapoo

fileupload上传中文文件名时乱码问题(转)

原文地址:http://www.blogjava.net/duduli/archive/2008/11/11/239845.html

?

昨天让这个乱码问题弄了很久,一大早就开始想要怎么解决才好。
很简单上传页面,jsp上传页面代码

1fileupload下传中文文件名时乱码有关问题(转)????<form?action="/struts2/UploadServlet"?method="post"?enctype="multipart/form-data">?
2fileupload下传中文文件名时乱码有关问题(转)????????用户名:<input?type="text"?name="username"><br>
3fileupload下传中文文件名时乱码有关问题(转)????????密?码:<input?type="password"?name="password"><br>
4fileupload下传中文文件名时乱码有关问题(转)????????文件1:<input?type="file"?name="file1"><br>
5fileupload下传中文文件名时乱码有关问题(转)????????文件2:<input?type="file"?name="file2"><br>
6fileupload下传中文文件名时乱码有关问题(转)????????<input?type="submit"?value="提交">
7fileupload下传中文文件名时乱码有关问题(转)????</form>?

下面是UploadServlet代码

?1fileupload下传中文文件名时乱码有关问题(转)@SuppressWarnings("serial")
?2fileupload下传中文文件名时乱码有关问题(转)public?class?UploadServlet?extends?HttpServlet?{
?3fileupload下传中文文件名时乱码有关问题(转)
?4fileupload下传中文文件名时乱码有关问题(转)????@SuppressWarnings({?"unchecked",?"deprecation"?})
?5fileupload下传中文文件名时乱码有关问题(转)????public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)
?6fileupload下传中文文件名时乱码有关问题(转)????????????throws?ServletException,?IOException?{
?7fileupload下传中文文件名时乱码有关问题(转)//????????????设置工厂
?8fileupload下传中文文件名时乱码有关问题(转)????????????DiskFileItemFactory?factory?=?new?DiskFileItemFactory();
?9fileupload下传中文文件名时乱码有关问题(转)????????????String?path?=?request.getRealPath("/upload");
10fileupload下传中文文件名时乱码有关问题(转)//????????????设置文件存储位置
11fileupload下传中文文件名时乱码有关问题(转)????????????factory.setRepository(new?File(path));
12fileupload下传中文文件名时乱码有关问题(转)//????????????设置大小,如果文件小于设置大小的话,放入内存中,如果大于的话则放入磁盘中
13fileupload下传中文文件名时乱码有关问题(转)????????????factory.setSizeThreshold(1024*1024);
14fileupload下传中文文件名时乱码有关问题(转)????????????
15fileupload下传中文文件名时乱码有关问题(转)????????????ServletFileUpload?upload?=?new?ServletFileUpload(factory);
16fileupload下传中文文件名时乱码有关问题(转)//????????????这里就是中文文件名处理的代码,其实只有一行,serheaderencoding就可以了
17fileupload下传中文文件名时乱码有关问题(转)????????????upload.setHeaderEncoding("utf-8");
18fileupload下传中文文件名时乱码有关问题(转)????????????/*String?enCoding?=?request.getCharacterEncoding();
19fileupload下传中文文件名时乱码有关问题(转)????????????if(enCoding?!=?null){
20fileupload下传中文文件名时乱码有关问题(转)????????????????upload.setHeaderEncoding(enCoding);
21fileupload下传中文文件名时乱码有关问题(转)????????????}*/
22fileupload下传中文文件名时乱码有关问题(转)????????????
23fileupload下传中文文件名时乱码有关问题(转)????????????try?{
24fileupload下传中文文件名时乱码有关问题(转)????????????????List<FileItem>?list?=?upload.parseRequest(request);
25fileupload下传中文文件名时乱码有关问题(转)????????????????for(FileItem?item?:?list){
26fileupload下传中文文件名时乱码有关问题(转)//????????????????????判断是不是上传的文件,如果不是得到值,并设置到request域中
27fileupload下传中文文件名时乱码有关问题(转)//????????????????????这里的item.getfieldname是得到上传页面上的input上的name
28fileupload下传中文文件名时乱码有关问题(转)????????????????????if(item.isFormField()){
29fileupload下传中文文件名时乱码有关问题(转)????????????????????????String?name?=?item.getFieldName();
30fileupload下传中文文件名时乱码有关问题(转)????????????????????????String?value?=item.getString("utf-8");
31fileupload下传中文文件名时乱码有关问题(转)????????????????????????System.out.println(name);
32fileupload下传中文文件名时乱码有关问题(转)????????????????????????System.out.println(value);
33fileupload下传中文文件名时乱码有关问题(转)????????????????????????request.setAttribute(name,?value);
34fileupload下传中文文件名时乱码有关问题(转)????????????????????}
35fileupload下传中文文件名时乱码有关问题(转)//????????????????????如果是上传的文件,则取出文件名,
36fileupload下传中文文件名时乱码有关问题(转)????????????????????else{
37fileupload下传中文文件名时乱码有关问题(转)????????????????????????String?name?=?item.getFieldName();
38fileupload下传中文文件名时乱码有关问题(转)????????????????????????String?value?=?item.getName();
39fileupload下传中文文件名时乱码有关问题(转)????????????????????????System.out.println(name);
40fileupload下传中文文件名时乱码有关问题(转)????????????????????????System.out.println(value);
41fileupload下传中文文件名时乱码有关问题(转)//????????????????????????得到不要地址的文件名,不同的浏览器传递的参数不同,有的直接传递文件名,而又的把文件地址一起传递过来
42fileupload下传中文文件名时乱码有关问题(转)//????????????????????????使用substring方法可以统一得到文件名而不得到文件位置
43fileupload下传中文文件名时乱码有关问题(转)????????????????????????int?start?=?value.lastIndexOf("\\");
44fileupload下传中文文件名时乱码有关问题(转)????????????????????????String?fileName?=?value.substring(start?+?1);
45fileupload下传中文文件名时乱码有关问题(转)????????????????????????request.setAttribute(name,?fileName);
46fileupload下传中文文件名时乱码有关问题(转)//????????????????????????写文件到path目录,文件名问filename
47fileupload下传中文文件名时乱码有关问题(转)????????????????????????item.write(new?File(path,fileName));
48fileupload下传中文文件名时乱码有关问题(转)????????????????????}
49fileupload下传中文文件名时乱码有关问题(转)????????????????}
50fileupload下传中文文件名时乱码有关问题(转)????????????}
51fileupload下传中文文件名时乱码有关问题(转)????????
52fileupload下传中文文件名时乱码有关问题(转)????????????catch?(FileUploadException?e)?{
53fileupload下传中文文件名时乱码有关问题(转)????????????????e.printStackTrace();
54fileupload下传中文文件名时乱码有关问题(转)????????????}?catch?(Exception?e)?{
55fileupload下传中文文件名时乱码有关问题(转)????????????????e.printStackTrace();
56fileupload下传中文文件名时乱码有关问题(转)????????????}
57fileupload下传中文文件名时乱码有关问题(转)//????????????跳转到显示结果页面
58fileupload下传中文文件名时乱码有关问题(转)????????????request.getRequestDispatcher("upload/result2.jsp").forward(request,?response);
59fileupload下传中文文件名时乱码有关问题(转)????}
60fileupload下传中文文件名时乱码有关问题(转)
61fileupload下传中文文件名时乱码有关问题(转)}

用EL表达式显示输出

1fileupload下传中文文件名时乱码有关问题(转)??<body>
2fileupload下传中文文件名时乱码有关问题(转)?????用户名:${requestScope.username?}?<br>
3fileupload下传中文文件名时乱码有关问题(转)?????密??码:${requestScope.password?}?<br>
4fileupload下传中文文件名时乱码有关问题(转)?????文件1?:${requestScope.file1?}<br>
5fileupload下传中文文件名时乱码有关问题(转)?????文件2?:${requestScope.file2?}<br>
6fileupload下传中文文件名时乱码有关问题(转)??</body>


其实很简单的设置就可以把中文件上传,并正确显示正确的中文文件名。
在网上找了一点资料,但是都写得很少,没有把完整的写出来。
所以把它写出来,让大家少走点弯路。

读书人网 >开源软件

热点推荐