• Java Servlet 入门: 问题系列:Filter中通过HttpServletRequest.getParts()获取不到上传文件。


    问题:

    一开始以为Servlet 没有提供对文件读取的相关内容。

    后来发现,HttpServletRequest中有getParts方法,可以获取上传的文件。

    再后发,经过反复测试,发现都读不到相关内容。

    再后发,发现有一些示例,在Servlet程序中通过注解可以获取到。

    嗯,我代码只有Filter,没有Servlet,所以。。。读不到。

    解决:

    最后发现:在Tomcat中通过server.xml配置:allowCasualMultipartParsing=true可以实现:

    这个毕竟要手工配置,一直在找有没有通过代码可以设置的,找了很久,目前没发现。 

    补充说明:

    HttpRequest request = getRequest();
            write("msg : " + request.getParameter("msg") + "<br/>");
            Collection<Part> parts = request.getParts();
            if (parts != null) {
                for (Part part : parts) {
                    write("fileName : " + part.getSubmittedFileName() + "<br/>");
                }
            }

    对于拿到的Part,即Body的解析内容。

    如果存在文件,返回:表单+请求头+文件混在一起的parts。

    part.getSubmittedFileName() 不为null,则有上传的文件名
    part.getName() 不为null,则有表单或请求头的名称,值的话通过 request.getParameter("msg")、request.getHeader("xxx") 来读取。

    如何判断哪些是表单,哪些是文件?看哪个名称null不null。
  • 相关阅读:
    深入理解C++的动态绑定和静态绑定
    【转载】“惊群”,看看nginx是怎么解决它的
    352. Data Stream as Disjoint Intervals
    lambda
    auto
    sizeof(类)
    private是自己私有的,protected是可以让孩子知道的,public是公开的
    【转载】C++ typedef用法小结
    string char * const char *之间的互相转换
    【转载】Web Service 的工作原理
  • 原文地址:https://www.cnblogs.com/cyq1162/p/16629711.html
Copyright © 2020-2023  润新知