java实现文件上传的三种方式,java上传文件实现

  java实现文件上传的三种方式,java上传文件实现

  

目录

请求类型单文件上传多文件上传多文件单字段上传多文件多字段上传

 

  

请求类型

 

  

单文件上传

 

  //上传单个文件@ response body @ request mapping(value= upload file ,produces= multipart/form-data;charset=UTF-8 )公共字符串上传文件(http servlet请求request){ CommonsMultipartResolver multipart resolver=new CommonsMultipartResolver(request。getsession().getServletContext());if(多部分解析器。is multipart(request)){ defaultmultiparthttpservlet request multipart request=(defaultmultiparthttpservlet request)请求;多部分文件多部分文件=多部分请求。getfile( file );if(multipart file==null){ system。出去。println( multipart file==null );} String filename=多部分请求。getfile( file ).getOriginalFilename();字符串tmpFile=请求。getsession().getServletContext().获取真实路径(/)uuid。随机uuid().toString().替换(-, )。apk ;文件目标文件=新文件(tmpFile);app entity app entity=new app entity();if (null!=multipartFile) { //保存文件请尝试{多部分文件。transferto(目标文件);} catch(IllegalStateException e){ logger。错误(多部分文件。transferto,IllegalStateException ,e);} catch(IOException e){ logger。错误(多部分文件。transferto,io异常,e);} } }返回“”;}

  

多文件上传

 

  

多文件单字段上传

 

  @ response body @ request mapping(value= upload files ,produces= multipart/form-data;charset=UTF-8 )公共字符串uploadfile(multiparthttpservlet request request){ CommonsMultipartResolver multipart resolver=new CommonsMultipartResolver(request。getsession().getServletContext());if(多部分解析器。是多部分(请求)){//上传多个文件,一个字段中包含多个文件字符串项目路径=请求。getsession().getServletContext().通用电气公司

  tRealPath("/"); MultiValueMap<String, MultipartFile> multiFileMap = request.getMultiFileMap(); List<MultipartFile> fileSet = new LinkedList<>(); for(Map.Entry<String, List<MultipartFile>> temp : multiFileMap.entrySet()){ fileSet = temp.getValue(); } for(MultipartFile temp : fileSet){ File file2 = new File(projectPath+temp.getOriginalFilename()); try { temp.transferTo(file2); } catch (IOException e) { e.printStackTrace(); } } } return ""; }

 

  

多文件多字段上传

 

  

 @ResponseBody @RequestMapping(value = "uploadfiles", produces = "multipart/form-data;charset=UTF-8") public String uploadfile(MultipartHttpServletRequest request){ CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); if (multipartResolver.isMultipart(request)) { //上传多个文件,每个字段一个文件 Iterator<String> fileNames = request.getFileNames(); while (fileNames.hasNext()){ // 取得上传文件 String uploadName = fileNames.next(); MultipartFile file = request.getFile(uploadName); if (file != null) { String projectPath = request.getSession().getServletContext().getRealPath("/"); String originalFilename = file.getOriginalFilename(); String tmpFile = projectPath + System.currentTimeMillis() + "_" + originalFilename; File targetFile = new File(tmpFile); try { file.transferTo(targetFile); } catch (IOException e) { e.printStackTrace(); } } } } return ""; }

如果上面方法不行,看下面

 

  

@PostMapping(value = "test", produces = "multipart/form-data;charset=UTF-8")public void UploadFiles(HttpServletRequest request) throws IOException { //如果请求中包含文件 if(ServletFileUpload.isMultipartContent(request)){ // 创建一个通用的多部分解析器 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; List<MultipartFile> files = multipartRequest.getFiles("file"); File targetFile; for (MultipartFile file : files){ //保存文件到本地 String projectPath = request.getSession().getServletContext().getRealPath("/"); projectPath = projectPath + System.currentTimeMillis() + "_" + new Random().nextInt(100); File dir = new File(projectPath); if (!dir.exists()){ dir.mkdir(); } String originalFilename = file.getOriginalFilename(); String tmpFile = projectPath + File.separator + originalFilename; targetFile = new File(tmpFile); file.transferTo(targetFile); //将文件保存到本地并记录信息 //... } }}

还有一种方法,函数入参直接接受文件

 

  例如:

  

//单文件public String UploadFiles(@RequestParam("file") MultipartFile file){}//多文件public String UploadFiles(@RequestParam("file") List<MultipartFile> files){}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT。

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: