zoukankan      html  css  js  c++  java
  • 【java】[文件上传jar包]commons-fileUpload组件解决文件上传(文件名)乱码问题

    response.setContentType("text/html; charset=UTF-8");
      Boolean isMultipart = ServletFileUpload.isMultipartContent(request);
      PrintWriter out = response.getWriter();
      if (isMultipart) {
       FileItemFactory fileItemFactory = new DiskFileItemFactory();
       ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
    servletFileUpload.setHeaderEncoding("UTF-8");//解决http报头乱码,即中文文件名乱码
       try {
        List<FileItem> list = servletFileUpload.parseRequest(request);
        for (Iterator<FileItem> iter = list.iterator(); iter.hasNext();) {
         FileItem item = iter.next();
         if (item.isFormField()) {
           out.println(item.getFieldName());
           out.println("<br/>");
           out.println("<br/>");
           out.println(item.getString("UTF-8")); //解决表单输入输乱码
         }
         else{
          out.println(item.getFieldName());
          out.println(item.getName());
         }
        }
       } catch (Exception e) {
        //throw new BusinessException(" 出现文件上传错误。 ");
        System.out.println(" 出现文件上传错误。 ");
       }
      }

     

     

     
    这几天,做一个东西需要上传图片和视频,于是就用commons-fileupload做为上传组件,写了个上传的servlet,但是在实际上传测试的时候,发现中文的表单值和中文的文件名都是乱码.
    于是上网查了一下,几位前辈也总结了这个问题,但是具体的情况不同,现把自己遇到这个问题的最后解决方法写下来,以备后用.  
    1.由于我的页面是utf-8的编码,因此写了个过滤器,对所有的request请求使用utf-8编码  
    2.然后在上传的servlet中取得request的编码格式, 

       String encoding=request.getCharacterEncoding();
    3,解决上传文件的路径乱码设置,如下   
       FileItemFactory fif=new DiskFileItemFactory();  
       ServletFileUpload sfu=new ServletFileUpload(fif); 

       sfu.setHeaderEncoding(encoding);//这里是设置编码的

    4.解决表单域字段的值的乱码,如下
       item.getString(encoding);
       经过这几个步骤以后,就可以解决中文乱码的问题,至于文中提到的过滤器,
       还有具体的上传的细节代码,可以从tomcat的例子,commons-fileupload的文档中获得信息.

  • 相关阅读:
    css解决display:inline-block;产生的缝隙(间隙)
    js二进制与十进制互转
    js获取HTTP的请求头信息
    安装WampServer时出现的问题(丢失VCRUNTIME140.dll或MSVCR110.dll)以及解决办法
    学习安装并配置前端自动化工具Gulp
    解决overflow:hidden在安卓微信页面没有效果的办法
    Python 调用 ES、Solr、Phoenix
    Python 调用 Hprose接口、Dubbo接口、Java方法
    Python调用Redis
    robot用例执行常用命令(转)
  • 原文地址:https://www.cnblogs.com/jx270/p/6408122.html
Copyright © 2011-2022 走看看