SpringBoot实现文件上传下载功能小结
最近做的一个项目涉及到文件上传与下载。前端上传采用百度webUploader插件。有关该插件的使用方法还在研究中,日后整理再记录。本文主要介绍SpringBoot后台对文件上传与下载的处理。
单文件上传
//单文件上传 @RequestMapping(value="/upload") @ResponseBody publicStringupload(@RequestParam("file")MultipartFilefile){ try{ if(file.isEmpty()){ return"文件为空"; } //获取文件名 StringfileName=file.getOriginalFilename(); logger.info("上传的文件名为:"+fileName); //获取文件的后缀名 StringsuffixName=fileName.substring(fileName.lastIndexOf(".")); logger.info("文件的后缀名为:"+suffixName); //设置文件存储路径 StringfilePath="D://aim//"; Stringpath=filePath+fileName+suffixName; Filedest=newFile(path); //检测是否存在目录 if(!dest.getParentFile().exists()){ dest.getParentFile().mkdirs();//新建文件夹 } file.transferTo(dest);//文件写入 return"上传成功"; }catch(IllegalStateExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } return"上传失败"; }
如果想要修改文件路径及文件名,修改filePath以及fileName即可。
多文件上传
//多文件上传 @RequestMapping(value="/uploadMore",method=RequestMethod.POST) @ResponseBody publicStringhandleFileUpload(HttpServletRequestrequest){ Listfiles=((MultipartHttpServletRequest)request).getFiles("file"); MultipartFilefile=null; BufferedOutputStreamstream=null; for(inti=0;i " +e.getMessage(); } }else{ return"第"+i +"个文件上传失败因为文件为空"; } } return"上传成功"; }
文件下载
//文件下载相关代码 @RequestMapping("/download") publicStringdownloadFile(HttpServletRequestrequest,HttpServletResponseresponse){ StringfileName="aim_test.txt";//设置文件名,根据业务需要替换成要下载的文件名 if(fileName!=null){ //设置文件路径 StringrealPath="D://aim//" Filefile=newFile(realPath,fileName); if(file.exists()){ response.setContentType("application/force-download");//设置强制下载不打开 response.addHeader("Content-Disposition","attachment;fileName="+fileName);//设置文件名 byte[]buffer=newbyte[1024]; FileInputStreamfis=null; BufferedInputStreambis=null; try{ fis=newFileInputStream(file); bis=newBufferedInputStream(fis); OutputStreamos=response.getOutputStream(); inti=bis.read(buffer); while(i!=-1){ os.write(buffer,0,i); i=bis.read(buffer); } System.out.println("success"); }catch(Exceptione){ e.printStackTrace(); }finally{ if(bis!=null){ try{ bis.close(); }catch(IOExceptione){ e.printStackTrace(); } } if(fis!=null){ try{ fis.close(); }catch(IOExceptione){ e.printStackTrace(); } } } } } returnnull; }
MultipartConfig配置
可以通过MultipartConfig配置类对文件上传进行全局控制。
@Configuration publicclassMultipartConfig{ @Bean publicMultipartConfigElementmultipartConfigElement(){ MultipartConfigFactoryfactory=newMultipartConfigFactory(); //置文件大小限制,超出此大小页面会抛出异常信息 factory.setMaxFileSize("2MB");//KB,MB //设置总上传数据总大小 factory.setMaxRequestSize("20MB"); //设置文件临时文件夹路径 //factory.setLocation("E://test//"); //如果文件大于这个值,将以文件的形式存储,如果小于这个值文件将存储在内存中,默认为0 //factory.setMaxRequestSize(0); returnfactory.createMultipartConfig(); } }
注意事项
前后端文件传输格式应为multipart/form-data
总结
以上所述是小编给大家介绍的SpringBoot实现文件上传下载功能小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!