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; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。