文件上传

1、前言

  文件上传是我们经常遇到的,使用我自己就写了一个小小的代码。

2、准备工作

  你可以新建一个 javaweb 项目,用于测试我们自己写的代码,如果在测试的项目中成功的话,在将这写代码写入正式的项目中。

  新建的web项目:

  

  还需要引入2个 JAR 包:

  

  将这两个jar 加入 Libraries 中即可。

 3、编辑上传文件界面

  在 WebRoot 中新建 index.jsp 文件,然后编写如下: 

<form action="<%=basePath%>uploadFile" enctype="multipart/form-data" method="post">
        <input type="file" name="file">
        <input type="submit">
    </form>

  

4、上传文件到指定文件

  代码如下:

package com.stydy.servlet;

import java.io.File;
import java.io.IOException;
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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
 * 实现文件上传的方法
 * @author TongZhou
 *    2017年10月09日
 */
@WebServlet("/uploadFile")
public class UploadFile extends HttpServlet {
    
    /**
     * doGet方法
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    /**
     * doPost 方法
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        //解决上传时的乱码问题
        request.setCharacterEncoding("utf-8");
        
        //创建一个工厂
        DiskFileItemFactory factory=new DiskFileItemFactory();
        
        //通过工厂创建解析器
        ServletFileUpload upload=new ServletFileUpload(factory);
        
        //解析 request
        try {
            List<FileItem> files=upload.parseRequest(request);
            
            //获取传入文件
            FileItem file=files.get(0);
            
            //获取文件名
            System.out.println(file.getName());
            
            //获取文件的上传类型
            System.out.println(file.getContentType());
            
            //获取本地file文件
            File f=new File("G://a.txt");
            
            //写入上传的内容
            file.write(f);
            
        } catch (FileUploadException e) {
            e.printStackTrace();
        }catch (Exception e) {
            e.printStackTrace();
        }
    }

}

 5、实验结果如下:

  我是在我电脑的  G://a.txt  新建的一个a.txt 文本件,然后我往里上传数据。

  浏览器:

  

  

  在 console 中有输出的,因为我在 Servlet 中有输出。

  

  文件上传成功。

  

  

原文地址:https://www.cnblogs.com/gzbit-zxx/p/7641856.html