• Servlet3.0文件上传


    使用文件上传需要引入Servlet jar和javaee jar,我这里使用的是Servlet3.1.0版和javaee7

    <!--java ee-->
            <dependency>
                <groupId>javaee</groupId>
                <artifactId>javaee-api</artifactId>
                <version>7</version>
            </dependency>
    
            <!-- Servlet3.0 -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>
    

      

    客户端编程

            要上传文件,必须利用 multipart/form-data 设置HTML表单的enctype属性值,指在告诉服务器,向服务器发送二进制数据。

           这个表单中必须包含类型file的一个输入元素,它会被显示成一个按钮,单击它时,会打开一个对话框,供我们选择文件。

    表单页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Servlet文件上传</title>
    </head>
    <body>
    <form action="/servlet/FileServlet" method="post" enctype="multipart/form-data">
        选择文件:<input type="file" name="file"/>
        <input type="submit"/>
    </form>
    
    </body>
    </html>
    

      

    服务器端

     MultipartConfig可以带有以下属性,这些全部是可选的:

            maxFileSize:表示最多可上传的文件容量。超过设定值的文件将会遭到拒绝。maxFileSize 的默认值为-1,表示不受限制。

            maxRequestSize:表示允许多部分http请求的最大容量。它的默认值为-1,表示它是不受限制的。

            location:将上传的文件保存到磁盘中的指定位置,调用Part 中的write 方法将用到它。

            fileSizeThreshold:设定一个溢出尺寸,超过这个值之后,上传的文件将被写入磁盘。

        在一个由多部分组成的请求中,每一个表单域,包括非文本域,都会被转换成一个Part。

    import javax.servlet.ServletException;
    import javax.servlet.annotation.MultipartConfig;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.Part;
    import java.io.IOException;
    
    /**
     * Created by Administrator on 2018/4/3.
     */
    
    /**
     * 引入java Servlet3.1.0版本
     * 使用javaee7.0版本
     */
    //设置上传路径
    @MultipartConfig(location = "D:\ioTest\")
    public class FileServlet extends HttpServlet {
        //使用Servlet3.0实现文件上传
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //设置编码格式
            response.setContentType("text/html;charset=UTF-8");
            request.setCharacterEncoding("UTF-8");
            //获取上传文件
            Part part=request.getPart("file");
            //上传文件          上传文件名称
            part.write(part.getSubmittedFileName());
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request,response);
        }
    }
    

      

    最后注意一点,如果出现以下错误,很有可能是你的tomcat自带的servletapi版本太低,建议最好不要直接更换lib下的jar文件,

    因为很有可能会发生冲突,所以还是建议在网上重新下载一个高版本的tomcat,

  • 相关阅读:
    Spring事务管理
    Spring Bean装配(下)——注解
    Spring Bean装配(上)
    Spring入门篇
    Spring入门篇——AOP基本概念
    计算机组成原理(1)——系统概述
    浏览器缓存 总结
    React-router 4 总结
    Redux 总结
    操作系统位数 的 概念(转)
  • 原文地址:https://www.cnblogs.com/xuchangqi1/p/8707905.html
Copyright © 2020-2023  润新知