文件上传

Posted 付吉龙

tags:

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

 1 package cn.servlet;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 import java.util.List;
 6 import java.util.UUID;
 7 
 8 import javax.servlet.ServletException;
 9 import javax.servlet.annotation.WebServlet;
10 import javax.servlet.http.HttpServlet;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 
14 import org.apache.commons.fileupload.FileItem;
15 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
16 import org.apache.commons.fileupload.servlet.ServletFileUpload;
17 
18 @WebServlet(urlPatterns = "/up2")
19 public class Up2Servlet extends HttpServlet {
20     @Override
21     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
22         req.setCharacterEncoding("UTF-8");
23 
24         DiskFileItemFactory disk = new DiskFileItemFactory();
25         ServletFileUpload up = new ServletFileUpload(disk);
26         // 如果你不知道用户上传多少个文件,则应该遍历
27         try {
28             List<FileItem> list = up.parseRequest(req);
29             FileItem item1 = list.get(0);
30             String name = item1.getString("UTF-8");// 对于非文件,用于这种方式来获取用户提交的
31             FileItem item2 = list.get(1);
32             String age = item2.getString("UTF-8");
33             FileItem item3 = list.get(2);
34             String fileName = item3.getName();
35             fileName = fileName.substring(fileName.lastIndexOf("\\") + 1);
36             // 对文件重名称
37             String extName = fileName.substring(fileName.lastIndexOf(".") + 1);// abc.jpg
38                                                                                 // -=>
39                                                                                 // jpg
40             String uuid = UUID.randomUUID().toString().replace("-", "");
41             String newFileName = uuid + "." + extName;
42             // 获取文件上传的真实的目录
43             String realPath = getServletContext().getRealPath("/files");
44             // 实现文件上传
45             item3.write(new File(realPath, newFileName));
46             // 将转发到show.jsp显示
47             req.setAttribute("name", name);
48             req.setAttribute("age", age);
49             req.setAttribute("oldFileName", fileName);
50             req.setAttribute("newFileName", newFileName);
51             req.getRequestDispatcher("/jsps/show.jsp").forward(req, resp);
52         } catch (Exception e) {
53             e.printStackTrace();
54         }
55 
56     }
57 }

 

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

将存储在内存中的文件上传到s3

JS创建文件并上传服务器

ajaxFileUpload上传带参数文件及JS验证文件大小

android的自带的httpClient 怎么上传文件

大文件上传下载实现思路,分片断点续传代码实现,以及webUpload组件

如何通过 HttpWebRequest 上传文件?