JavaWeb文件上传下载,使用fileupload组件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb文件上传下载,使用fileupload组件相关的知识,希望对你有一定的参考价值。

一、引入jar包

  1. commons-fileupload-1.2.1.jar

  2. commons-io-1.4.jar

二、文件上传

1. html代码

1 <form name="upload_test" action="${pageContext.request.contextPath}/FileServlet?method=upload" method="post" enctype="multipart/form-data">
2           用户名: <input type="text" name="userName" > <br>
3           文件: <input type="file" name="fileName" > <br>
4           <input type="submit" value="上传" >
5       </form>

2. java代码

 1     private void upload(HttpServletRequest request, HttpServletResponse response)
 2     throws ServletException, IOException {
 3         String uri = null;
 4         try {
 5             //文件上传工厂
 6             FileItemFactory factory = new DiskFileItemFactory();
 7             //文件上传核心工具类
 8             ServletFileUpload upload = new ServletFileUpload(factory);
 9             /******设置大小限制参数******/
10             // 单个文件大小限制
11             upload.setFileSizeMax(10*1024*1024);
12             // 总文件大小限制
13             upload.setSizeMax(50*1024*1024);
14             // 对中文文件编码处理
15             upload.setHeaderEncoding("UTF-8");
16             //判断: 当前表单是否为文件上传表单
17             if(upload.isMultipartContent(request)){
18                 //把请求数据转换为一个FileItem对象,再用集合封装
19                 List<FileItem> list = upload.parseRequest(request);
20                 // 遍历: 得到每一个上传的数据
21                 for (FileItem item : list) {
22                     // 判断类型(true:普通表单 || false:上传表单)
23                     if(item.isFormField()){
24                         //获取名称
25                         String name = item.getFieldName();
26                         //获取值
27                         String value = item.getString();
28                         //打印内容
29                         System.out.println("name: " + name + "\tvalue: " + value);
30                     } else {
31                         /*****上传表单*****/
32                         //获取文件名称
33                         String name = item.getName();
34                         // ----处理上传文件名重名问题----
35                         //获取一个36位的uuid字符串
36                         String id = UUID.randomUUID().toString();
37                         //拼接文件名
38                         name = id + "#" + name;
39                         //得到上传目录
40                         String basePath = getServletContext().getRealPath("upload");
41                         System.out.println("basePath: " + basePath);
42                         //创建要上传的文件对象
43                         File file = new File(basePath, name);
44                         //上传
45                         item.write(file);
46                         // 删除组件运行时产生的临时文件
47                         item.delete();
48                     }
49                 }
50             } else {
51                 System.out.println("不是上传表单");
52             }
53             
54             uri = "/success.jsp";
55         } catch (FileUploadException e) {
56             e.printStackTrace();
57             uri = "/error/error.jsp";
58         } catch (Exception e) {
59             e.printStackTrace();
60             uri = "/error/error.jsp";
61         } finally {
62             request.getRequestDispatcher(uri).forward(request, response);
63         }
64     }

三、文件下载

------------------挖坑待填----------

以上是关于JavaWeb文件上传下载,使用fileupload组件的主要内容,如果未能解决你的问题,请参考以下文章

struts2文件上传

如何在ColdFusion中上传图像文件后存储图像文件

从列表中删除文件后,文件上传控制会话不删除

JBoss EAP 7.3 上的 Primefaces 6 文件上传问题

[JavaWeb]文件上传下载和书城项目

JavaWeb(文件下载)