首页 > 其他分享 >SpringMVC:文件上传和下载

SpringMVC:文件上传和下载

时间:2023-02-26 16:33:44浏览次数:38  
标签:文件 String SpringMVC photo ResponseEntity new 上传 下载

文件下载

ResponseEntity用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览器的响应报文

使用ResponseEntity实现下载文件的功能

@RequestMapping("/testDown")
public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws
    IOException {
    //获取ServletContext对象
    ServletContext servletContext = session.getServletContext();
    //获取服务器中文件的真实路径
    String realPath = servletContext.getRealPath("/static/img/1.jpg");
    //创建输入流
    InputStream is = new FileInputStream(realPath);
    //创建字节数组
    byte[] bytes = new byte[is.available()];
    //将流读到字节数组中
    is.read(bytes);
    //创建HttpHeaders对象设置响应头信息
    MultiValueMap<String, String> headers = new HttpHeaders();
    //设置要下载方式以及下载文件的名字
    headers.add("Content-Disposition", "attachment;filename=1.jpg");
    //设置响应状态码
    HttpStatus statusCode = HttpStatus.OK;
    //创建ResponseEntity对象
    ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(bytes, headers,statusCode);
    //关闭输入流
    is.close();
    return responseEntity;
}

文件上传

文件上传要求form表单的请求方式必须为post,并且添加属性enctype="multipart/form-data"

SpringMVC中将上传的文件封装到MultipartFile对象中,通过此对象可以获取文件相关信息

上传步骤:

①添加依赖:

<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>

②在SpringMVC的配置文件中添加配置:

<!--必须通过文件解析器的解析才能将文件转换为MultipartFile对象-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
</bean>

③控制器方法:

@RequestMapping("/testUp")
public String testUp(MultipartFile photo, HttpSession session) throws IOException {
    //获取上传的文件的文件名
    String fileName = photo.getOriginalFilename();
    //处理文件重名问题
    String hzName = fileName.substring(fileName.lastIndexOf("."));
    fileName = UUID.randomUUID().toString() + hzName;
    //获取服务器中photo目录的路径
    ServletContext servletContext = session.getServletContext();
    String photoPath = servletContext.getRealPath("photo");
    File file = new File(photoPath);
    if(!file.exists()){
        file.mkdir();
    }
    String finalPath = photoPath + File.separator + fileName;
    //实现上传功能
    photo.transferTo(new File(finalPath));
    return "success";
}

欢迎关注公众号:愚生浅末。

标签:文件,String,SpringMVC,photo,ResponseEntity,new,上传,下载
From: https://www.cnblogs.com/kohler21/p/17156943.html

相关文章

  • python flask就业分析可视化系统(课设、毕设、学习、源码下载)
    pythonflask就业分析可视化系统基于Pythonflask职业可视化系统基于Pythonflask工作大数据可视化系统后端:python3 flask数据库:MySQL前端:html css js主要功能......
  • python Django智慧气瓶管理系统(课设、毕设、学习、源码下载)
    pythonDjango智慧气瓶管理系统PythonDjango智慧煤气燃气管理平台PythonDjango医院氧气管理系统 后端:python3 django数据库:MySQL前端:html css js主要功能:数......
  • python Django智慧仓库管理系统(课设、毕设、学习、源码下载)
    pythonDjango智慧仓库管理系统PythonDjango智慧货物管理平台PythonDjango仓库管理系统后端:python3 django数据库:MySQL前端:html css js主要功能:数据可视化首......
  • python下载与安装
    python下载与安装下载官网下载地址:https://www.python.org/可以下载最新版本,这里以下载3.7.2为例,可以复制下面链接进行下载64bitwindows:https://www.python.org/ftp/......
  • 14_SpringMVC_其他注解
     SpringMVC中注解完善1、@PostMapping作用:指定当前发送请求的方式只可以是post请求属性:  和@RequestMapping中属性一致代码实现@PostMapping("/userControllerA")pub......
  • 14_SpringMVC_其他注解
     SpringMVC中注解完善1、@PostMapping作用:指定当前发送请求的方式只可以是post请求属性:  和@RequestMapping中属性一致代码实现@PostMapping("/userControllerA")pub......
  • 13_SpringMVC_异常处理
    ​ SpringMVC异常简介系统中异常包括两类:预期异常(检查型异常)和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手......
  • 13_SpringMVC_异常处理
    ​ SpringMVC异常简介系统中异常包括两类:预期异常(检查型异常)和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手......
  • 14_SpringMVC_其他注解
    ​ SpringMVC中注解完善1、@PostMapping作用:指定当前发送请求的方式只可以是post请求属性:  和@RequestMapping中属性一致代码实现@PostMapping("/userContro......
  • 14_SpringMVC_其他注解
    ​ SpringMVC中注解完善1、@PostMapping作用:指定当前发送请求的方式只可以是post请求属性:  和@RequestMapping中属性一致代码实现@PostMapping("/userContro......