SpringMVC实现文件上传和下载功能

网友投稿 389 2023-04-16


SpringMVC实现文件上传和下载功能

本文实例为大家分享了android九宫格图片展示的具体代码,供大家参考,具体内容如下

文件上传

第一步,加入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)

   private String testUpload(HttpServletRequest request,@RequestParam(value="desc")String desc,@RequestParam(value="file") CommonsMultipartFile file) {

   InputStream inputStream = null;

   OutputStream outputStream = null;

   ServletContext servletContext = request.getServletContext();

   //获取文件存放的真实路径

   String realPath = servletContext.getRealPath("/upload");

   //为了避免多次上传同一个文件导致命名重复,在文件名前加UUID前缀

   String prefix=UUID.randomUUID().toString();

   prefix=prefix.replace("-", "");

   String fileName=prefix+"_"+file.getOriginalFilename();

   File file2=new File(realPath);

   //检查文件目录是否存在,若不存在就创建目录

   if(!file2.exists()){

   file2.mkdirs();

   }

   try {

   inputStream=file.getInputStream();

   outputStream=new FileOutputStream(new File(realPath+"/"+fileName));

   //设置缓冲区

   byte[]buffer=new byte[1024];

   int len=0;

   //循环检测文件是否上传完成,未完成就向写入输出流

   while((len=inputStream.read(buffer)) != -1){

   outputStream.write(buffer, 0, len);

   outputStream.flush();

   }

   } catch (IOException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

   } finally{

   //关闭输入输出流

   if(outputStream !=null){

   try {

   outputStream.close();

   inputStream.close();

   } catch (IOException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

   }

   }

  }

return "success";

}

文件下载

用ResponseEntity 返回值完成文件下载;在jsp页面给出链接即可。

jsp页面链接地址:

复制代码 代码如下:

下载链接

在controller层创建方法

@RequestMapping(value="/testResponseEntity")

ResponseEntitytestResponseEntity(HttpServletRequest request)throws Exception{

ServletContext seAInDfYDQrvletContext = request.getServletContext();

//获取要下载的文件的文件名

String fileName="喜剧之王.mp3";

//获取要下载的文件的真实路径

String realPath = servletContext.getRealPath("/WEB-INF/"+fileName);

//创建输入流

InputStream inputStream=new FileInputStream(new File(realPath));

byte[]body=new byte[inputStream.available()];

inputStream.read(body);

MultiValueMapheaders=new HttpHeaders();

//设置头信息和字符集

fileName = new String(fileName.getBytes("gbk"),"iso8859-1");

headers.set("Content-Disposition", "attachment;filename="+fileName);

HttpStatus statusCode = HttpStatus.OK;

ResponseEntityresponseEntity =new ResponseEntity(body, headers, statusCode);

return responseEntity;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:前端mock数据工具(前端数据模拟工具)
下一篇:详谈Java枚举、静态导入、自动拆装箱、增强for循环、可变参数
相关文章

 发表评论

暂时没有评论,来抢沙发吧~