实现文件上传功能(FileUpload组件)

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

    文件上传:

    项目中经常用到文件上传。

    自己实现文件上传,使用文件上传组件fileupload组件

    1、指定表单类型为文件上传,

    enctype=”multipart/form-data”

    2、提交方式必须是:post

    3、表单中存在文件域元素。

    需要的jar包

    index.jsp

    <body>
    <form action="${pageContext.request.contextPath}/FileUploadTest" method = "post" enctype="multipart/form-data">
    用户名::<input type = "text" name = "username"/><br>
    文件:<input type = "file" name = "file1"/><br>
    <input type = "submit">
    </form>
    </body>
    FileUploadTest.servlet
    package zck.servlet;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List; import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileItemFactory;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload; /**
    * Servlet implementation class FileUploadTest
    */
    @WebServlet("/FileUploadTest")
    public class FileUploadTest extends HttpServlet {
    private static final long serialVersionUID = 1L; /**
    * @see HttpServlet#HttpServlet()
    */
    public FileUploadTest() {
    super();
    // TODO Auto-generated constructor stub
    } /**
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //创建文件上传工厂类
    DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
    //创建文件上传核心类
    ServletFileUpload upload = new ServletFileUpload(fileItemFactory);
    upload.setFileSizeMax(30*1024*1024);//设置单个文件最大值30M
    upload.setSizeMax(50*1024*1024);//最多50个文件 //判断表单是否是文件上传表单
    if(upload.isMultipartContent(request)) {
    //把请求数据转化为FileItem对象集合
    try {
    List<FileItem> list = upload.parseRequest(request);
    //遍历得到每一个数据项
    for(FileItem fileItem :list) {
    //判断普通项,还是文件。
    if(fileItem.isFormField()) {
    //普通表单项
    String fieldName =fileItem.getFieldName();//表单元素名称
    String content =fileItem.getString();//值
    System.out.print(fieldName+"\n"+content+"\n\n");
    }else {
    //文件上传表单项
    String name =fileItem.getName();//获取文件名
    //上传文件目录路径
    String basePath = ("D:\\software\\eclipse\\workplace2019-1\\UploadFiles\\WebContent\\upload\\");
    //新建文件
    File file = new File(basePath,name);
    fileItem.write(file);
    fileItem.delete();//删除临时文件
    }
    }
    } catch (FileUploadException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }else {
    System.out.print("不是文件上传表单,不处理");
    }
    } /**
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
    } }

    运行界面

    代码中主要对象及属性

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

    “实现文件上传功能(FileUpload组件)” 的相关文章

    python自动导入包如何实现 - 开发技术

    这篇“python自动导入包如何实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python自动导入包如何实现”文章吧。问题描述: 代码编写过程中,需...

    XML 简介

    文章目录 一、XML 简介二、XML 用途总结 一、XML 简介 XML 被设计用来传输和存储数据。 HTML 被设计用来显示数据。 XML 指可扩展标记语言(eXtensible Markup Language)。 可扩展标记语言(英语...

    Tensor的创建方法

    目录 1、直接创建Tensor——torch.tensor() 2、从numpy创建tensor——torch.from_numpy(ndarray) 3、根据数值创建tensor 1torch.zeros()根据size创建全0张量 2torch.zeros_like跟根据input形状...

    Qt中获取文字的宽度和高度

    QFontMetrics fm = painter->fontMetrics(); QPrinter *printer = new QPrinter; mPixelPerCentimeter = printer->resolution()/2.54; foreach(QString st...

    PHP更新数据库失败的原因是什么及怎么解决 - 编程语言

    这篇“PHP更新数据库失败的原因是什么及怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP更新数据库失败的原因是什么及怎么解决”文章吧。...

    Maven打包没有指定主类问题怎么解决 - 开发技术

    本文小编为大家详细介绍“Maven打包没有指定主类问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Maven打包没有指定主类问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Maven打包没有指定主类在使用IDEA开发项...