zoukankan      html  css  js  c++  java
  • 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,

  • 相关阅读:
    常见网络设备工作原理
    Linux逻辑卷的创建
    关于华为模拟器eNSP-防火墙USG6000V怎么重装镜像
    一人之下(名言吧)
    Struts2学习笔记——Struts2搭建和第一个小程序
    eclipse部署Tomcat9
    通过反射访问类的私有方法(无参)
    Java学习笔记之——IO
    Java学习笔记之——线程的生命周期、线程同步
    Java学习笔记之——多线程
  • 原文地址:https://www.cnblogs.com/xuchangqi1/p/8707905.html
Copyright © 2011-2022 走看看