学习笔记——SpringMVC文件上传与下载(springmvc 上传文件)

  本篇文章为你整理了学习笔记——SpringMVC文件上传与下载(springmvc 上传文件)的详细内容,包含有springmvc上传和下载 springmvc 上传文件 springmvc实现文件下载 springmvc 下载文件 学习笔记——SpringMVC文件上传与下载,希望能帮助你了解 学习笔记——SpringMVC文件上传与下载。

  (2)将ResponseEntity T 对象,作为方法返回值

  (3)为ResponseEntity T 对象,设置三个参数

  2、示例代码

  

@RequestMapping("/fileDownloadController")

 

   public ResponseEntity byte[] fileDownload(HttpServletRequest request,String filename){

   ResponseEntity byte[] responseEntity = null;

   try {

   //获取文件位置

   //获取文件真实路径【(requestsession)- ServletContext】

   String realPath = request.getServletContext().getRealPath("/WEB-INF/download/" + filename);

   //输入流

   InputStream is = new FileInputStream(realPath);

   //文件下载

   byte[] bytes = new byte[is.available()];

   is.read(bytes);

   //设置响应头

   HttpHeaders headers = new HttpHeaders();

   //设置要下载的文件的名字(及文件格式为附件格式,通知服务器下载当前资源,而不是打开)

   headers.add("Content-Disposition","attachment;filename");

   //处理中文文件名问题

   headers.setContentDispositionFormData("attachment",new String(filename));

   //状态码

   responseEntity = new ResponseEntity (bytes,headers, HttpStatus.OK);

   is.close();

   } catch (Exception e) {

   e.printStackTrace();

   return responseEntity;

   }

 

  二、文件上传

  1、实现文件上传思路

  (1)准备工作

  ①准备文件上传页面

  表单的提交方式必须为POST

  设置表单enctype属性值为multipart/form-data

  表单中包含文件域(type=file)

  ②导入jar包

  

 !-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -- 

 

   dependency

   groupId commons-fileupload /groupId

   artifactId commons-fileupload /artifactId

   version 1.4 /version

   /dependency

 

  ③装配解析器:CommonsMultipartResolver

  

 !-- 装配CommonsMultipartResolver-- 

 

   bean id="multipartResolver"

   !-- 设置字符集--

   property name="defaultEncoding" value="utf-8" /property

   !-- 设置总文件的大小--

   property name="maxUploadSize" value="102400" /property

   /bean

 

  (2)实现步骤

  ①将type=file(文件域)直接入参:MultipartFile类型即可

  ②获取文件名称

  

@Controller

 

  public class FileUploadController {

   @RequestMapping("/fileUploadController")

   public String fileUploadController(String username,

   MultipartFile updateFile,

   HttpSession session){

   try {

   //获取文件名称

   String filename = updateFile.getOriginalFilename();

   //获取上传路径

   String realPath = session.getServletContext().getRealPath("/WEB-INF/upload");

   //判断上传路径是否存在(如不存在,创建)

   File filePath = new File(realPath);

   if(!filePath.exists()){

   filePath.mkdirs();

   //实现文件上传

   //File.separator:是系统默认的分隔符

   File uFile = new File(filePath+File.separator+filename);

   updateFile.transferTo(uFile);

   } catch (IOException e) {

   e.printStackTrace();

   return "success";

  }

 

  三、文件上传优化

  1、允许同名文件上传

  (1)使用UUID解决文件名重复问题

  UUID是一个32位16进制随机数(特点:唯一性)

  

//实现文件上传

 

   //解决重复文件名上传的方式

   String uuid = UUID.randomUUID().toString().replace("-", "");

   //File.separator:是系统默认的分隔符

   File uFile = new File(filePath+File.separator+uuid+filename);

 

  (2)使用时间戳解决文件名重复问题

  System.currentTimeMillis()

  2、设置上传文件大小上限

  在装配CommonsMultipartResolver时,设置上传文件的上限

  

 !-- 装配CommonsMultipartResolver-- 

 

   bean id="multipartResolver"

   !-- 设置字符集--

   property name="defaultEncoding" value="utf-8" /property

   !-- 设置总文件的大小--

   property name="maxUploadSize" value="102400" /property

   /bean

 

  

  以上就是学习笔记——SpringMVC文件上传与下载(springmvc 上传文件)的详细内容,想要了解更多 学习笔记——SpringMVC文件上传与下载的内容,请持续关注盛行IT软件开发工作室。

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

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