首页 > 代码库 > 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实现文件上传_上传多个文件