Servlet实现文件上传

 

一、Servlet实现文件上传,需要添加第三方提供的jar

下载地址:

1) commons-fileupload-1.2.2-bin.zip      :   点击打开链接

2) commons-io-2.3-bin.zip                       :    点击打开链接   

 

二、文件上传的表单提交方式必须是POST方式,

编码类型:enctype="multipart/form-data",默认是 application/x-www-form-urlencoded

比如:<form action="FileUpLoad"enctype="multipart/form-data"method="post">

 

三、编写java代码

 

package com.utils;

import java.io.File;

import java.io.IOException;

import java.util.List;

import javax.servlet.ServletException;

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.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

 

public class FileUpload  extends  HttpServlet{

 

    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

        doPost(request,response);

}

 

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 

        //1.设置编码  

        request.setCharacterEncoding("utf-8");

        //2.创建一个工厂类

        DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory();

        //3.得到当前项目的根目录

        String dir=this.getServletContext().getRealPath("/");

        //4设置缓存的大小

        diskFileItemFactory.setSizeThreshold(1024*1024);

        //5设置文件的保存目录

        File file=new File(dir+"fileTemp");

        if(!file.exists()){

            file.mkdir();

        }

        //创建request解析器

        ServletFileUpload servletFileUpload=new ServletFileUpload(diskFileItemFactory);

         List <FileItem> list=null;

       try{

            list=servletFileUpload.parseRequest(request);

        }catch (Exception e) {

            // TODO: handle exception

            System.out.println("error");

        }

    

      if(!list.isEmpty()){

            for(FileItem fileItem:list){

                if(fileItem.isFormField()){

                   

                }else{

                    //表单字段的名称

                    String fileName=fileItem.getFieldName();

                    //得到文件的名称

                    String filePath=fileItem.getName();

                    fileItem.getString("utf-8");

                    try {

                        fileItem.write(new  File(file, filePath));

                    } catch (Exception e) {

                         e.printStackTrace();

                    }

                }

            }

        }         

    }

 

}

 

四、JSP页面编写

 

<html>

<head>

  <meta http-equiv="Content-Type" content="text/html; charset=GB18030">

  <title>This page for FileUpload</title>

</head>

<body>

  <p>Choose the file for uploading:

  <form action="accept.jsp" method=post enctype="multipart/form-data">

    <input type=file name=fileforload size=30>

    <br>

    <input type=submit value=commit name=submit>

  </form>

</body>

</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值