1 文件下载

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

使用ResponseEntity实现下载文件功能

package com.springmvc.controller;
​
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
​
/*** @author wangjinyu* @create 2022-11-17 8:59* @version: 1.0*/
@Controller
public class FileDownAndUp {
​@RequestMapping("/test/down")public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throwsIOException {//获取ServletContext对象ServletContext servletContext = session.getServletContext();//获取服务器中文件的真实路径String realPath = servletContext.getRealPath("img");// File.separator:表示当前文件的分隔符,可以自动匹配自动使用文件的系统realPath=realPath + File.separator + "1.jpg";//创建输入流InputStream is = new FileInputStream(realPath);//创建字节数组,is.available():获取字节输入流所对应输入文件的所有字节数byte[] bytes = new byte[is.available()];//将流读到字节数组中is.read(bytes);//创建HttpHeaders对象设置响应头信息,在java代码中设置响应头或者获取请求头需要使用键值对的方式MultiValueMap<String, String> headers = new HttpHeaders();//设置要下载方式以及下载文件的名字  Content-Disposition:设置当前下载方式,是固定的 ,attachment:以附件的方式进行下载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;}
}

2 文件上传

要求

  • from表单的请求方式必须为post

  • from表单必须设置属性 enctype="multipart/form-data" ,表示上传数据为二进制

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

<!--enctype="multipart/form-data":表示上传的数据为二进制--><form th:action="@{/test/up}" method="post" enctype="multipart/form-data">头像:<input type="file" name="photo" value="选择图片"><br/><input type="submit" value="提交"></form>

步骤

① 添加依赖

<!-- 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("/test/up")public String testUp(MultipartFile photo, HttpSession session) throws IOException {//获取上传的文件名String filename = photo.getOriginalFilename();//保证上传相同的文件前一个不被重写//获取文件名后缀String substring = filename.substring(filename.lastIndexOf("."));//获取uuidString uuid = UUID.randomUUID().toString();//拼接一个新的文件名filename=uuid+substring;//获取服务器中的photo路径ServletContext servletContext = session.getServletContext();//获取真实路径String realPath = servletContext.getRealPath("photo");//创建realPath所对应的File文件File file = new File(realPath);//判断文件路径是否存在if(! file.exists()){//如果不存在创建文件路径file.mkdir();}//文件最终路径String finalPath=realPath+File.separator+filename;//实现上传功能photo.transferTo(new File(finalPath));return "success";}

SpringMVC中文件的上传和下载相关推荐

  1. SpringMVC实现文件的上传和下载

    SpringMVC实现文件的上传和下载http://www.bieryun.com/1120.html 前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:"用什么技术来实现一般网页上文件的 ...

  2. SpringMVC实现文件的上传与下载

    文件的上传与下载可以说是工作中经常使用的功能,现在整理一下,希望能够给大家一个参考.这里以 Maven 的形式来创建项目,相关的配置文件会把主要的内容列出来,其他头文件信息不再一一全部的列出.最后会把 ...

  3. SpringMVC与JSON传值,取值,使用SpringMVC实现文件的上传与下载,SpringMVC拦截器

    一. JSON 1.1 什么是JSON 在实际开发中,通常需要和别的系统交换数据,数据交换的格式通常有XML和JSON等: JSON(JavaScript Object Notation:JavaSc ...

  4. 用WebClinet实现SharePoint上文档库中文件的上传与下载

    微软的SharePoint 提供了强大的文档管理功能,能够创建各种类型的文档库,并对文档进行相应的管理.所以我们的产品也打算将文件用SharePoint来管理,实现文档的共享访问.于是,就产生了用客户 ...

  5. php中upload函数,PHP中文件的上传和下载常用函数

    文件的上传 1.html标签需要做的上传设置 1) form标签属性设置 1>method设置为post 2>enctype设置为multipart/form-data 3>form ...

  6. FtpWebRequest(转)---关于C/S中文件的上传,下载,获得文件列表

    微软的.net framework 2.0相对于1.x来说增加了对FTP的支持.以前为了符合我的需求,我不等不使用第三方类库来实现FTP功能,但是为了可靠,还是使用.net framework的类比较 ...

  7. JSP中文件的上传与下载示例

    转自:http://www.2cto.com/kf/201406/312486.html 一.文件上传的原理 1.文件上传的前提: a.form表单的method必须是post b.form表单的en ...

  8. java中文件的上传和下载:文件上传和下载原理

    在TCP/IP中,我们知道最早的上传机制为FTP,它是指将文件由客户端发送到服务器的标准机制.然而我们在jsp编程中不能使用FTP来上传文件,这是由于jsp运行机制决定的.               ...

  9. nginx java文件上传_Nginx实现文件的上传和下载

    文件的上传只要保证特殊的地址先到达Nginx,然后通过Nginx指定至指定的服务器即可,目前配置是本机.文件的下载的做法就是把本机的当前目录下面的文件给返回回去. server { listen ; ...

最新文章

  1. ubuntu配置jdk环境
  2. mysql 一键安装 linux_linux下mysql8 shell脚本一键安装
  3. 实际程序调用IndexWriter* writer = NULL
  4. 跳转路径时资源路径加/和不加/的区别
  5. ios ionic3 跳转第三方地图 xcode加入白名单
  6. c语言程序设计2014春第一套作业,C语言程序设计2014春第一套作业
  7. uva1628 最优路径问题
  8. .Net Core 之 MSBuild 介绍
  9. java中随机数彩票练习_基于javascript实现彩票随机数生成(简单版)
  10. 【HDU - 2639】Bone Collector II (第K大背包,dp,STLset)
  11. 操作系统之虚拟存储管理
  12. 快看,我们的分布式缓存就是这样把注册中心搞崩塌的!
  13. Mac双网卡路由设置实现内外网同时访问
  14. 八大数据结构及常见面试题
  15. 使用R语言进行一元回归
  16. 在SCI-Hub上下载国外论文
  17. Moneybookers支付方式开发
  18. 炫酷的时间HTML页面,炫酷css3垂直时间轴特效
  19. 2021年计算机考证真题二级题库
  20. ansible-playbook批量部署Zabbix

热门文章

  1. 2022年淘宝女王节预售活动时间介绍
  2. cs231n-LSTM_Captions
  3. 算力智库2021隐私计算论坛圆满落幕,隐私计算落地会长出怎样的新商业模式?
  4. 单片机的外部中断(二)
  5. map函数、filer函数、reduce函数的用法和区别
  6. Android 图片闪烁的效果
  7. android qq底部菜单栏,怎么关闭手机QQ底部导航栏的“看点”?
  8. PCF8591详解(蓝桥杯单片机模块(IIC总线))
  9. Prometheus+Grafana监控告警配置
  10. Google GMS认证问题