Java文件上传-ApacheFileUpload组件的使用

使用ApacheFileUpload组件实现文件上传

1.在pom.xml中添加所需commons-fileupload依赖

<dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>

2.编写JSP文件,需要注意的几个点:表单项添加enctype="multipart/form-data",把请求方式设置为post,添加文件域<input type="file" name="imgFile">,详情如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>文件上传</title>
</head>
<body>
<form action="/fileUpload" method="post" enctype="multipart/form-data">
    用户名:<input type="text" name="username" id="username"><br>
    文件:  <input type="file" name="imgFile"><br>
    <input type="submit" value="上传">
</form>
</body>
</html>

3.控制器代码

@Controller
public class Upload1 {
    @RequestMapping("fileUpload")
    public String testUpload(HttpServletRequest request) throws Exception {
        /**
         *  //G:/java/project/JavaWeb/springmvc_02_01/target/springmvc_02_01-1.0-SNAPSHOT/upload
         */
        //保存的文件夹路径
        String path = request.getSession().getServletContext().getRealPath("/upload");
        //获取时间,把每一天上存的文件放在不同的子目录
        String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());

        //创建文件夹
        File file = new File(path , date);
        //判断文件夹是否存在,不存在就创建新的文件夹
        if (!file.exists()){
            boolean mkdirs = file.mkdirs();
        }

        //文件上存
        //4.1 FileItem的工厂
        FileItemFactory factory = new DiskFileItemFactory();
        //4.2 文件上传组件提供的文件上传核心Api,对象servlet中文件上传提供支持。
        ServletFileUpload upload = new ServletFileUpload(factory);
        //4.3 把request对象,转换为FileItem
        List<FileItem> items = upload.parseRequest(request);
        for (FileItem item : items) {
            if (item.isFormField()){
                System.out.println("用户名:" + item.getString("UTF-8"));
            }else {
                String fileName = item.getName();
                //使用UUID+上传的文件后缀名生成唯一文件名
                fileName = UUID.randomUUID().toString() + fileName.substring(fileName.lastIndexOf("."));
                //上传
                item.write(new File(file , fileName));
                //清楚缓存
                item.delete();
            }
        }
        //跳转到成功页面
        return "success";
    }
}

4.html页面
Java文件上传-ApacheFileUpload组件的使用
5.执行结果
Java文件上传-ApacheFileUpload组件的使用
Java文件上传-ApacheFileUpload组件的使用