使用Servlet实现文件上传功能
来源:互联网 发布:错生网络剧 编辑:程序博客网 时间:2024/05/17 22:37
Servlet文件上传实例:
@WebServlet("/servlet/UploadServlet")public class UploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public UploadServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //设置编码,post可以直接utf-8,如果是get的话需要new String(name.getByte("iso8859-1"),"utf-8")的方式进行处理 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter pw = response.getWriter(); try { //设置系统环境 DiskFileItemFactory factory = new DiskFileItemFactory(); //文件存储的路径 String storePath = getServletContext().getRealPath("/WEB-INF/files"); //判断传输方式 form enctype=multipart/form-data boolean isMultipart = ServletFileUpload.isMultipartContent(request); if(!isMultipart) { pw.write("传输方式有错误!"); return; } ServletFileUpload upload = new ServletFileUpload(factory); upload.setFileSizeMax(4*1024*1024);//设置单个文件大小不能超过4M upload.setSizeMax(4*1024*1024);//设置总文件上传大小不能超过6M //监听上传进度 upload.setProgressListener(new ProgressListener() { //pBytesRead:当前以读取到的字节数 //pContentLength:文件的长度 //pItems:第几项 public void update(long pBytesRead, long pContentLength, int pItems) { System.out.println("已读去文件字节 :"+pBytesRead+" 文件总长度:"+pContentLength+" 第"+pItems+"项"); } }); //解析 List<FileItem> items = upload.parseRequest(request); for(FileItem item: items) { if(item.isFormField())//普通字段,表单提交过来的 { String name = item.getFieldName(); String value = item.getString("UTF-8"); System.out.println(name+"=="+value); }else { String mimeType = item.getContentType(); //获取上传文件类型 if(mimeType.startsWith("image")){ InputStream in =item.getInputStream(); String fileName = item.getName(); if(fileName==null || "".equals(fileName.trim())) { continue; } fileName = fileName.substring(fileName.lastIndexOf("\\")+1); fileName = UUID.randomUUID()+"_"+fileName; //按日期来建文件夹 String newStorePath = makeStorePath(storePath); String storeFile = newStorePath+"\\"+fileName; OutputStream out = new FileOutputStream(storeFile); byte[] b = new byte[1024]; int len = -1; while((len = in.read(b))!=-1) { out.write(b,0,len); } in.close(); out.close(); item.delete();//删除临时文件 } } } }catch(org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException e){ //单个文件超出异常 pw.write("单个文件不能超过4M"); }catch(org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException e){ //总文件超出异常 pw.write("总文件不能超过6M"); }catch (FileUploadException e) { e.printStackTrace(); } } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } private String makeStorePath(String storePath) { Date date = new Date(); SimpleDateFormat df= new SimpleDateFormat("yyyy-MM-dd"); String s = df.format(date); String path = storePath+"\\"+s; File file = new File(path); if(!file.exists()) { file.mkdirs();//创建多级目录,mkdir只创建一级目录 } return path; } }
阅读全文
0 0
- 使用Servlet实现文件上传功能
- CKEditor使用及开启文件上传功能(Servlet实现)
- 004——使用servlet实现文件上传功能
- 使用Servlet实现文件上传
- Jsp+Servlet文件上传功能实现
- flex4+servlet 实现文件上传功能
- Servlet文件上传功能的实现
- Servlet文件上传功能的实现!
- Servlet实现多文件上传的功能
- Servlet简单实现文件上传功能
- jsp+servlet实现文件的上传功能
- (jsp和Servlet 功能篇) Servlet 实现文件上传
- 在Servlet中使用开源fileupload包实现文件上传功能
- 在Servlet中使用开源fileupload包实现文件上传功能
- 在Servlet中使用开源fileupload包实现文件上传功能
- 在Servlet中使用开源fileupload包实现文件上传功能
- 在Servlet中使用开源fileupload包实现文件上传功能
- 在Servlet中使用开源fileupload包实现文件上传功能
- oracle中的rownum属性
- Java一些集合的理解
- 洛谷 P1162 填涂颜色
- define认识
- 【Oracle学习】之 子查询
- 使用Servlet实现文件上传功能
- Android开发教程:理解Intent和Intent Filter
- 简单的手风琴JS效果实现
- Cannot create a server using the selected type
- 什么是PID控制中的超调
- Java学习笔记之IO补充
- 剑指Offer-删除链表中重复的结点
- Educational Codeforces Round 21 B.Average Sleep Time 前缀和,双指针
- Java反射机制