commons fileupload 文件上传
来源:互联网 发布:职场霸凌 知乎 编辑:程序博客网 时间:2024/04/28 09:50
package cn.itcast.servlet;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.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class Upload2Servlet extends HttpServlet {public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");/* * 上传三步 * 1. 得到工厂 * 2. 通过工厂创建解析器 * 3. 解析request,得到FileItem集合 * 4. 遍历FileItem集合,调用其API完成文件的保存 */DiskFileItemFactory factory = new DiskFileItemFactory();ServletFileUpload sfu = new ServletFileUpload(factory);try {List<FileItem> fileItemList = sfu.parseRequest(request);FileItem fi1 = fileItemList.get(0);FileItem fi2 = fileItemList.get(1);System.out.println("普通表单项演示:" + fi1.getFieldName() + "=" + fi1.getString("UTF-8"));System.out.println("文件表单项演示:");System.out.println("Content-Type: " + fi2.getContentType());System.out.println("size: " + fi2.getSize());System.out.println("filename: " + fi2.getName());// 保存文件File destFile = new File("c:/baibing.jpg");fi2.write(destFile);} catch (FileUploadException e) {throw new RuntimeException(e);} catch (Exception e) {throw new RuntimeException(e);}}}
// 工厂DiskFileItemFactory factory = new DiskFileItemFactory(20*1024, new File("F:/f/temp"));// 解析器ServletFileUpload sfu = new ServletFileUpload(factory);//sfu.setFileSizeMax(100 * 1024);//限制单个文件大小为100K//sfu.setSizeMax(1024 * 1024);//限制整个表单大小为1M// 解析,得到Listtry {List<FileItem> list = sfu.parseRequest(request);FileItem fi = list.get(1);///////////////////////////////////////////////////////* * 1. 得到文件保存的路径 */String root = this.getServletContext().getRealPath("/WEB-INF/files/");/* * 2. 生成二层目录 * 1). 得到文件名称 * 2). 得到hashCode * 3). 转发成16进制 * 4). 获取前二个字符用来生成目录 */String filename = fi.getName();//获取上传的文件名称/* * 处理文件名的绝对路径问题 */int index = filename.lastIndexOf("\\");if(index != -1) {filename = filename.substring(index+1);}/* * 给文件名称添加uuid前缀,处理文件同名问题 */String savename = CommonUtils.uuid() + "_" + filename;/* * 1. 得到hashCode */int hCode = filename.hashCode();String hex = Integer.toHexString(hCode);/* * 2. 获取hex的前两个字母,与root连接在一起,生成一个完整的路径 */File dirFile = new File(root, hex.charAt(0) + "/" + hex.charAt(1));/* * 3. 创建目录链 */dirFile.mkdirs();/* * 4. 创建目录文件 */File destFile = new File(dirFile, savename);/* * 5. 保存 */fi.write(destFile);///////////////////////////////////////////////////////} catch (FileUploadException e) {if(e instanceof FileUploadBase.FileSizeLimitExceededException) {request.setAttribute("msg", "您上传的文件超出了100KB!");request.getRequestDispatcher("/form3.jsp").forward(request, response);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
0 0
- 文件上传 commons-FileUpload
- Commons FileUpload上传文件
- Commons FileUpload上传文件
- commons-fileupload-文件上传
- commons fileupload 文件上传
- commons-fileupload上传文件
- 文件上传 commons-fileupload
- commons-fileupload 文件上传问题
- commons fileupload 文件上传应用
- Commons-fileupload 文件的上传
- commons-fileupload文件上传、下载
- 使用commons fileupload 上传文件
- commons-fileupload文件上传、下载
- 文件上传 commons-fileupload.jar
- 使用 Commons-fileupload 上传文件
- commons-fileupload 实现文件上传
- Commons-Fileupload 实现文件上传
- Servlet上传文件,commons-fileupload
- C语言字节对齐问题详解
- DijKstra算法(单源最短路径)
- Kanade-Lucas-Tomasi(KLT)进行目标跟踪
- 操作系统
- HDOJ-1699 || ZOJ-1623(状态机,寻找C++注释)
- commons fileupload 文件上传
- HotSpot java源码结构
- 黑马程序员——泛型、Map集合
- Spring集成Thrift - Servlet
- Servlet
- 【leetcode】 Linked_List_Cycle_II
- 喷水装置(一)
- 如何给PowerPoint每页加上总页码
- springMVC上传文件优化(12)