实现文件上传功能(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组件)” 的相关文章

    遍历,enumerate

    nameList = ['ab','cd','ef'] for i in range(len(nameList)): print nameList[i]str2="bsadgfsdaf" for i,t in enumerate(str2): print i,t 0 b 1 s 2 a 3 d...

    spark stream冷启动处理kafka中积压的数据

    因为首次启动JOB的时候,由于冷启动会造成内存使用太大,为了防止这种情况出现,限制首次处理的数据量spark.streaming.backpressure.enabled=true spark.streaming.backpressure.initialRate=200for example:#!/...

    spark stream上创建对象实例

    kafkaStream.foreachRDD { rdd => rdd.foreachPartition { partition => //每次在这里创建一个kafka producer实例是不可取的 }...

    Codeforces Bayan 2012-2013 Elimination Round / 241A Old Peykan (贪心)

    A. Old Peykan http://codeforces.com/contest/241/problem/A time limit per test memory limit per test input...

    基于FPGA的时间数字转换(TDC)设计(四: 基于IODELAY的TDC设计)

    1. 基于IODELAY的TDC设计原理 在第一篇中讲过,基于FPGA开发的TDC常见的有直接计数法,多相位时钟采样法,抽头延迟线法等等。前面3篇讲解了基于多相位的TDC,接下来主要讲解基于抽头延迟线的方法。在Xilinx FPGA开发中,要实现抽头延迟线,主要由进位链(Carry4)和IODEL...

    原生JS怎么实现简单屏幕截图 - 开发技术

    这篇文章主要介绍“原生JS怎么实现简单屏幕截图”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“原生JS怎么实现简单屏幕截图”文章能帮助大家解决问题。了解 HTML5 中的 CanvasHTML5 中的 Canvas 是一个绘图...