`

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

 
阅读更多

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

 

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

1      < form  action ="/struts2/UploadServlet"  method ="post"  enctype ="multipart/form-data" >  
2         用户名: < input  type ="text"  name ="username" >< br >
3         密 码: < input  type ="password"  name ="password" >< br >
4         文件1: < input  type ="file"  name ="file1" >< br >
5         文件2: < input  type ="file"  name ="file2" >< br >
6          < input  type ="submit"  value ="提交" >
7      </ form >  

下面是UploadServlet代码

 1 @SuppressWarnings( " serial " )
 2 public   class  UploadServlet  extends  HttpServlet  {
 3
 4     @SuppressWarnings( " unchecked " " deprecation "  } )
 5      public   void  doPost(HttpServletRequest request, HttpServletResponse response)
 6              throws  ServletException, IOException  {
 7 //             设置工厂
 8             DiskFileItemFactory factory  =   new  DiskFileItemFactory();
 9             String path  =  request.getRealPath( " /upload " );
10 //             设置文件存储位置
11             factory.setRepository( new  File(path));
12 //             设置大小,如果文件小于设置大小的话,放入内存中,如果大于的话则放入磁盘中
13             factory.setSizeThreshold( 1024 * 1024 );
14             
15             ServletFileUpload upload  =   new  ServletFileUpload(factory);
16 //             这里就是中文文件名处理的代码,其实只有一行,serheaderencoding就可以了
17             upload.setHeaderEncoding( " utf-8 " );
18              /* String enCoding = request.getCharacterEncoding();
19             if(enCoding != null){
20                 upload.setHeaderEncoding(enCoding);
21             } */

22             
23              try   {
24                 List < FileItem >  list  =  upload.parseRequest(request);
25                  for (FileItem item : list) {
26 //                     判断是不是上传的文件,如果不是得到值,并设置到request域中
27 //                     这里的item.getfieldname是得到上传页面上的input上的name
28                      if (item.isFormField()) {
29                         String name  =  item.getFieldName();
30                         String value  = item.getString( " utf-8 " );
31                         System.out.println(name);
32                         System.out.println(value);
33                         request.setAttribute(name, value);
34                     }

35 //                     如果是上传的文件,则取出文件名,
36                      else {
37                         String name  =  item.getFieldName();
38                         String value  =  item.getName();
39                         System.out.println(name);
40                         System.out.println(value);
41 //                         得到不要地址的文件名,不同的浏览器传递的参数不同,有的直接传递文件名,而又的把文件地址一起传递过来
42 //                         使用substring方法可以统一得到文件名而不得到文件位置
43                          int  start  =  value.lastIndexOf( " \\ " );
44                         String fileName  =  value.substring(start  +   1 );
45                         request.setAttribute(name, fileName);
46 //                         写文件到path目录,文件名问filename
47                         item.write( new  File(path,fileName));
48                     }

49                 }

50             }

51         
52              catch  (FileUploadException e)  {
53                 e.printStackTrace();
54             }
  catch  (Exception e)  {
55                 e.printStackTrace();
56             }

57 //             跳转到显示结果页面
58             request.getRequestDispatcher( " upload/result2.jsp " ).forward(request, response);
59     }

60
61 }

用EL表达式显示输出

1    < body >
2      用户名:${requestScope.username }  < br >
3      密  码:${requestScope.password }  < br >
4      文件1 :${requestScope.file1 } < br >
5      文件2 :${requestScope.file2 } < br >
6    </ body >


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

分享到:
评论

相关推荐

    struts2上传下载 解决中文文件名乱码

    在处理中文文件名时,由于编码问题,可能会遇到乱码的问题。这个问题在早期的互联网资源中被广泛讨论,但并非所有解决方案都能适用于所有情况。下面我们将深入探讨这个问题,并提供一种经过验证的有效方法。 首先,...

    jquery fileupload上传百分比 JAVA版解决中文乱码

    本篇将详细探讨如何在Java环境下使用jQuery File Upload实现文件上传并处理中文文件名的乱码问题。 首先,jQuery File Upload的核心原理是利用HTML5的File API进行异步文件上传。它通过AJAX请求将文件分块上传到...

    commons-fileupload文件上传实例代码

    本教程将深入讲解如何使用`commons-fileupload`库处理中文乱码问题以及实现多文件上传。 首先,`commons-fileupload`是Apache Commons项目的一个组件,专门用于处理HTTP请求中的多部分数据,即文件上传。它与...

    struts2 中文文件名文件下载

    在处理文件上传和下载时,Struts2可能会遇到一个常见的问题,即中文文件名的乱码问题。这是因为不同的系统和软件对字符编码的支持不同,尤其是涉及到网络传输时,编码的兼容性尤为重要。 在“struts2 中文文件名...

    struts2文件上传(解决中文乱码)

    然而,在处理中文字符时,可能会遇到URL乱码和文件名乱码的问题。下面我们将详细探讨如何在Struts2中解决这些问题。 首先,对于URL乱码,主要涉及到HTTP请求中的参数编码问题。当URL中包含中文字符时,浏览器会将...

    php ckeditor上传图片文件名乱码解决方法

    总的来说,对于CKEditor上传图片文件名乱码的问题,最安全且可靠的方式是通过重命名文件,确保文件名的唯一性和无乱码。同时,为了防止其他编码相关的错误,建议在整个项目中统一使用UTF-8编码,包括网页、数据库...

    Servlet中的中文乱码问题

    Apache的Commons FileUpload库提供了解决文件名乱码的方法,通过设置`DefaultServletFileUpload.setCharset("UTF-8")`。 6. **数据库操作** 如果Servlet涉及到与数据库的交互,数据库连接字符串、SQL语句中的中文...

    Struts上传,已经处理好乱码问题

    这一步至关重要,因为它解决了文件名乱码问题。 5. **前端HTML页面**: 在HTML表单中,添加`enctype="multipart/form-data"`属性,以支持文件上传。 ```html 上传" /&gt; ``` 总结,Struts框架处理文件上传...

    commons fileupload实现文件上传的实例代码

    对于上传的中文文件名乱码,通常需要在接收请求之前设置请求的字符编码,例如`request.setCharacterEncoding("UTF-8")`,确保服务器端处理文件名时使用正确的字符集。 **具体实现** 以下是一个简单的前端HTML表单...

    使用commons-fileupload实现的文件上传和下载

    本教程将详细介绍如何利用commons-fileupload库来实现在Java Web应用中的文件上传和下载,并确保在整个过程中不会出现中文乱码问题。 1. **Apache Commons FileUpload简介** Apache Commons FileUpload是一个开源...

    文件上传(中文架包)

    在Java中,Apache Commons IO 和 Commons FileUpload 这两个库是常用的文件上传工具,它们提供了处理文件上传的功能,并且可以解决中文文件名乱码的问题。Apache Commons IO 提供了丰富的文件操作函数,包括读写、...

    fileupload 文件上传

    一些系统或库可能不支持非ASCII字符,导致上传失败或文件名乱码。"fileupload"解决了这个问题,意味着它可以正确处理中文文件名,确保数据的完整性和一致性。 4. **文件大小限制**:为了防止恶意用户上传过大文件...

    commons-fileupload-1.0上传组件使用实例.

    在处理文件上传时,可能会遇到中文名称的文件出现乱码的问题。为了解决这个问题,需要确保以下几个方面得到正确的配置: 1. **前端页面的字符集**:确保HTML页面的字符集设置正确,如`; charset=UTF-8"&gt;`。 2. **...

    commons-fileupload-1.3.3

    - **文件名编码**:FileUpload支持自动解码文件名,解决跨域上传时可能出现的乱码问题。 - **错误处理**:提供完善的异常处理机制,方便捕获并处理文件上传过程中可能出现的各种错误。 5. **最佳实践** - **安全...

    commons-fileupload组件上传问题

    同时,应考虑文件名编码问题,避免出现乱码。 5. **异常处理**:在处理文件上传过程中可能会遇到各种异常,如文件大小超出限制、文件类型不合法等,需要捕获这些异常并给出相应的错误提示。 6. **安全性**:确保...

    struts2中的批量上传与文件下载(解决中文乱码问题)

    在实际开发中,处理文件上传和下载时,尤其是涉及到中文字符时,经常会出现中文乱码的问题。本文将详细介绍如何在Struts2框架下实现批量上传与文件下载,并解决中文乱码问题。 一、Struts2文件上传 1. 配置Struts2...

    解决servlet页面乱码问题

    8. **文件上传**:在处理文件上传时,特别是涉及文件名或文件内容包含非ASCII字符时,也要注意编码问题。Apache Commons FileUpload库允许设置上传的字符集。 9. **国际化与本地化**:如果你的网站支持多语言,要...

    commons-fileupload-1.4 jar包.rar

    2. 文件编码:FileUpload支持文件名的编码转换,避免因编码问题导致的乱码。 3. 自定义存储策略:可以通过实现FileItem接口创建自定义的存储策略,例如上传到云存储服务。 四、注意事项 1. 安全性:确保对上传的...

    无中文乱码的Struts上传下载(任意文件上传)

    在处理文件上传和下载时,Struts提供了一套完善的机制,但有时会遇到中文乱码的问题。本教程将详细介绍如何在Struts中实现无中文乱码的文件上传与下载,并涵盖任意数量的文件上传。 首先,解决中文乱码问题的关键...

Global site tag (gtag.js) - Google Analytics