apache_fileupload实现文件上传_上传多个文件
1、导包
核心类:
DiskFileItemFactory – 设置磁盘空间,保存临时文件。只是一个具类。
ServletFileUpload - 文件上传的核心类,此类接收request,并解析reqeust。
2、设置表单为post,且enctype为multipart/form-data,传递的是字节码
//req.getParameter("txt");//返回的是null
1 <form action=‘<c:url value="/UpLoad"></c:url>‘ method="post" enctype="multipart/form-data"> 2 File:<input type="file" name="file" /><br/> 3 <input type="submit" value="上传" /> 4 </form>
3、Demo /Upload
1 request.setCharacterEncoding("utf-8"); 2 //获取项目的绝对地址 3 String filepath= getServletContext().getRealPath("/file"); 4 String fileTemp=getServletContext().getRealPath("/temp"); 5 //1、声明工厂类,用于在指定磁盘上设置一个临时目录 6 /* 7 * 第一个参数:sizeThreadHold - 设置缓存(内存)保存多少字节数据,默认为10K 8 * 如果一个文件没有大于10K,则直接使用内存直接保存成文件就可以了。 9 * 如果一个文件大于10K,就需要将文件先保存到临时目录中去。 10 * 第二个参数 File 是指临时目录位置 11 * 或者无参函数 12 * disk.setSizeThreshold(sizeThreshold); 13 * disk.setRepository(repository) 14 * */ 15 DiskFileItemFactory disk=new DiskFileItemFactory(1024*10, new File(fileTemp)); 16 //2、声明,接收上面的临时目录 17 ServletFileUpload upload=new ServletFileUpload(disk); 18 //3、解析request 19 try { 20 //存储文件信息 21 List<Map<String, String>> imgs=new ArrayList<Map<String,String>>(); 22 23 List<FileItem> list=upload.parseRequest(request); 24 //遍历多个上传文件,如果只有一个上传文件可以用list.get(0)获得 25 for(FileItem item:list) 26 { 27 Map<String, String> map=new HashMap<String, String>(); 28 29 String fileType= item.getContentType(); 30 if(fileType.contains("image/")) 31 { 32 //获取文件名,getFieldName获得全路径 33 String fileName=item.getName(); 34 fileName=fileName.substring(fileName.lastIndexOf("\\")+1); 35 //获取扩展名 36 String extName=fileName.substring(fileName.lastIndexOf(".")); 37 fileName=UUID.randomUUID().toString().replace("-", "")+extName; //组成新文件名 38 39 InputStream in= item.getInputStream(); 40 int size=in.available();//获取文件大小 41 FileUtils.copyInputStreamToFile(in, new File(filepath+"/"+fileName));//使用工具类copy文件到流中 42 43 map.put("name", fileName); 44 map.put("size", ""+size); 45 map.put("type",fileType); 46 47 imgs.add(map); 48 item.delete();//删除缓存中缓存 49 } 50 request.setAttribute("list", imgs); 51 request.getRequestDispatcher("/show.jsp").forward(request, response); 52 } 53 54 } catch (Exception e) { 55 e.printStackTrace(); 56 } 57 58 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。