SpringMVC实现文件上传和下载功能
本文实例为大家分享了SpringMVC实现文件上传和下载的具体代码,供大家参考,具体内容如下
文件上传
第一步,加入jar包:
commons-fileupload-1.3.1.jar
commons-io-2.4.jar
第二步,在SpringMVC配置文件中配置CommonsMultipartResovler
//最大上传文件大小
第三步,前端表单 注意【POST请求,file类型,enctype="multipart/form-data"】
File:
desc:
第四步,在controller层创建方法
@RequestMapping(value="/testUpload",method=RequestMethod.POST) privateStringtestUpload(HttpServletRequestrequest,@RequestParam(value="desc")Stringdesc,@RequestParam(value="file")CommonsMultipartFilefile){ InputStreaminputStream=null; OutputStreamoutputStream=null; ServletContextservletContext=request.getServletContext(); //获取文件存放的真实路径 StringrealPath=servletContext.getRealPath("/upload"); //为了避免多次上传同一个文件导致命名重复,在文件名前加UUID前缀 Stringprefix=UUID.randomUUID().toString(); prefix=prefix.replace("-",""); StringfileName=prefix+"_"+file.getOriginalFilename(); Filefile2=newFile(realPath); //检查文件目录是否存在,若不存在就创建目录 if(!file2.exists()){ file2.mkdirs(); } try{ inputStream=file.getInputStream(); outputStream=newFileOutputStream(newFile(realPath+"/"+fileName)); //设置缓冲区 byte[]buffer=newbyte[1024]; intlen=0; //循环检测文件是否上传完成,未完成就向写入输出流 while((len=inputStream.read(buffer))!=-1){ outputStream.write(buffer,0,len); outputStream.flush(); } }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }finally{ //关闭输入输出流 if(outputStream!=null){ try{ outputStream.close(); inputStream.close(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } } return"success"; }
文件下载
用ResponseEntity
jsp页面链接地址:
下载链接
在controller层创建方法
@RequestMapping(value="/testResponseEntity") ResponseEntitytestResponseEntity(HttpServletRequestrequest)throwsException{ ServletContextservletContext=request.getServletContext(); //获取要下载的文件的文件名 StringfileName="喜剧之王.mp3"; //获取要下载的文件的真实路径 StringrealPath=servletContext.getRealPath("/WEB-INF/"+fileName); //创建输入流 InputStreaminputStream=newFileInputStream(newFile(realPath)); byte[]body=newbyte[inputStream.available()]; inputStream.read(body); MultiValueMap headers=newHttpHeaders(); //设置头信息和字符集 fileName=newString(fileName.getBytes("gbk"),"iso8859-1"); headers.set("Content-Disposition","attachment;filename="+fileName); HttpStatusstatusCode=HttpStatus.OK; ResponseEntity responseEntity=newResponseEntity (body,headers,statusCode); returnresponseEntity; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。