zoukankan      html  css  js  c++  java
  • 解决COS、FileUpload上传文件时中文文件名乱码问题

    方法:

    MultipartParser mp = new MultipartParser(request, 10*1024*1024);
    mp.setEncoding("GBK"); //加上这行代码即可

    示例:

    upload.html

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>enctype属性测试</title>
    </head>
    
    <body>
    <form id="form1" name="form1" enctype="multipart/form-data" method="post" action="cosUpload.jsp">
    上传文件: <input type="file" name="file" /><br>  
    请求参数 <input type="text" name="wawa" /><br>
    <input name="dd" type="submit" value="提交" />
    </form>
    </body>
    </html>

    cosUpload.jsp

    <%@ page contentType="text/html;charset=GBK" import="java.io.*,java.util.*"%>
    <%@ page import="com.oreilly.servlet.multipart.*,com.oreilly.servlet.*"%>
    <%
    
    //设置POST请求的内容最大字节为10M,该类用于解析HTTP请求
    MultipartParser mp = new MultipartParser(request, 10*1024*1024); 
    mp.setEncoding("GBK");
    //所有表单域都是Part实例
    Part part;
    //遍历请求中的所有表单域
    while ((part = mp.readNextPart()) != null)
    {
        //取得表单域的name属性值
        String name = part.getName();
        //对于普通表单域
        if (part.isParam())
        {
            //取得普通表单域的值
            ParamPart paramPart = (ParamPart) part;
            String value = paramPart.getStringValue("GBK");
            out.print("普通表单域部分:<br> name=" + name + "; value=" + value + "<br>");
        }
        //对于文件域
        else if (part.isFile())
        {
            //取得文件上传域
            FilePart filePart = (FilePart) part;
            String fileName = filePart.getFileName();
            if (fileName != null)
            {
                //输出文件内容
                long size = filePart.writeTo(new File(request.getRealPath("/")));
                out.println("上传文件:<br> 文件域的名=" + name + "; 文件名=" + fileName + "<br>" + 
                "上传文件的路径=" + filePart.getFilePath() + "<br>" + 
                "文件内容类型=" + filePart.getContentType() + "<br>" + 
                "文件大小=" + size + "<br>");
            }
            //文件名为空
            else
            { 
                //该文件域没有输入文件名
                out.println("file: name=" + name + "; EMPTY");
            }
            out.flush();
        }
    }
    %>

     FileUpload

    对于FileUpload组件,用upload.setHeaderEncoding()来解决文件名的乱码问题

  • 相关阅读:
    go 接收发送文件
    【0031】反转整数/判断回文
    【003】链表或字符串的【反转】【左旋转】
    【002】链表或字符串模拟加法/加一/乘法
    【01】数组中只出现一次的数字
    【面试题050】树中两个结点的最低公共祖先
    【面试题049】把字符串转换成整数
    【面试题048】不能继承的类
    【面试题047】不用加减乘除做加法
    【面试题046】求1+2+...+n
  • 原文地址:https://www.cnblogs.com/qrlozte/p/3780263.html
Copyright © 2011-2022 走看看