首页 > 代码库 > apache_fileupload实现文件上传_上传多个文件
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、解析request19 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 }
apache_fileupload实现文件上传_上传多个文件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。