SpringMVC-文件上传与下载

news/2025/2/15 21:26:00/

文章目录

  • 文件上传与下载
    • 1.下载
    • 2.上传

文件上传与下载

1.下载

	@RequestMapping("/testDown")public ResponseEntity<byte[]> testResponseEntity(HttpSession session) throws IOException {//获取servletcontext对象ServletContext servletcontext=session.getServletContext();//获取服务器中文件的真实路径String realPath=servletcontext.getRealPath("/static/img/1.jpg");System.out.println(realPath);//创建输入流IInputStream is = new FileInputStream(realPath);//创建字节数组byte[] bytes =new byte[is.available()];//将流读到字节数组中is.read(bytes);//创建HttpHeaders对象设置响应头信息MultiValueMap<String,String> headers = new HttpHeaders();//设置要下载方式以及下载文件的名字 只有1.jpg可以修改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.上传

2.1添加依赖
pom.xml

 <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version>
</dependency>

2.2.配置文件上传解析器
SpringMVC配置文件

<!--    配置文件上传解析器,将上传文件封装成MultipartFile对象--><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" ></bean>

2.3

  @RequestMapping("/testUp")public String testUp(MultipartFile photo ,HttpSession session) throws IOException {String fileName = photo.getOriginalFilename();//获取上传的文件的后绿名String suffixName = fileName.substring(fileName.lastIndexOf("."));//将UUID作为文件名String uuid = UUID.randomUUID().toString();//将uuid和后缀名拼接后的结果作为最终的文件名fileName = uuid + suffixName;ServletContext servletContext=session.getServletContext();String photoPath=servletContext.getRealPath("photo");File file = new File(photoPath);//判断photoPath所对应路径是否存在if(!file.exists()) {//若不存在,则创建目录file.mkdir();}String finalPath = photoPath + File.separator + fileName;photo.transferTo(new File(finalPath));return "target";}

http://www.ppmy.cn/news/1336058.html

相关文章

5G_RACH(一)

什么是RACH RACH 代表 Random Access Channel。这是开机时UE发给eNB的第一条消息。 为什么选择RACH &#xff1f;&#xff08;RACH 的功能是什么&#xff1f; 当你第一次听到RACH或RACH Process这个词时&#xff0c;你脑海中浮现的第一个问题是“为什么是RACH&#xff1f;”…

Less-1(sqlmap自动注入攻击)--sqli

环境准备 打开火狐浏览器&#xff0c;进入sqli第一关的页面 工具准备 sqlmap 参数解释 -u URL 指定目标URL进行注入测试。--dataDATA指定POST请求的数据进行注入测试--cookieCOOKIE指定用于身份验证的cookie进行注入测试-p PARAMETER指定要测试的参数--levelLEVEL设置测试的深…

Springmvc-@RequestBody

SpringBoot-2.7.12 请求的body参数无法转换&#xff0c;服务端没有报错信息打印&#xff0c;而是响应的状态码是400 PostMapping("/static/user") public User userInfo(RequestBody(required false) User user){user.setAge(19);return user; }PostMapping("…

redis原理(五)Lua语言

一、介绍&#xff1a; 1、背景&#xff1a; 在 Redis 的 2.6 以上版本中&#xff0c;除了可以使用命令外&#xff0c;还可以使用 Lua 语言操作 Redis。 Redis 命令的计算能力并不算很强大&#xff0c;而使用 Lua 语言则在很大程度上弥补了 Redis 的这个不足。 2、特点&#…

单片机14-17

目录 LCD1602 LCD1602液晶显示屏 直流电机驱动&#xff08;PWM&#xff09; LED呼吸灯 直流电机调速 AD/DA&#xff08;SPI通信&#xff09; AD模数转换 DA数模转换 红外遥控&#xff08;外部中断&#xff09; 红外遥控 红外遥控电机调速 LCD1602 LCD1602液晶显示屏 …

让AI帮你说话--GPT-SoVITS教程

有时候我们在录制视频的时候&#xff0c;由于周边环境嘈杂或者录音设备问题需要后期配音&#xff0c;这样就比较麻烦。一个比较直观的想法就是能不能将写好的视频脚本直接转换成我们的声音&#xff0c;让AI帮我们完成配音呢&#xff1f;在语音合成领域已经有很多这类工作了&…

【干货】一文掌握JavaScript检查对象空值的N种技巧!

在开发 JavaScript 应用程序时&#xff0c;经常需要检查对象是否为空。这是因为在处理和操作对象数据时&#xff0c;我们需要确保对象包含有效的值或属性。 在本文中&#xff0c;我们将讨论如何检查对象是否为空&#xff0c;其中包括 JavaScript 中检查对象是否为空的不同方法…

【GAMES101】Lecture 09 纹理贴图 点查询与范围查询 Mipmap

目录 纹理贴图 纹理放大-双线性插值 点采样纹理所带来的问题 Mipmap 各向异性过滤 纹理贴图 我们在之前的着色里面说过如何给物体上纹理&#xff0c;就是对于已经光栅化的屏幕点&#xff0c;就是每个像素的中心&#xff0c;去寻找对应纹理的映射位置的纹理颜色&#xff0…