SpringMVC中文件的上传和下载
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中文件的上传和下载相关推荐
- SpringMVC实现文件的上传和下载
SpringMVC实现文件的上传和下载http://www.bieryun.com/1120.html 前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:"用什么技术来实现一般网页上文件的 ...
- SpringMVC实现文件的上传与下载
文件的上传与下载可以说是工作中经常使用的功能,现在整理一下,希望能够给大家一个参考.这里以 Maven 的形式来创建项目,相关的配置文件会把主要的内容列出来,其他头文件信息不再一一全部的列出.最后会把 ...
- SpringMVC与JSON传值,取值,使用SpringMVC实现文件的上传与下载,SpringMVC拦截器
一. JSON 1.1 什么是JSON 在实际开发中,通常需要和别的系统交换数据,数据交换的格式通常有XML和JSON等: JSON(JavaScript Object Notation:JavaSc ...
- 用WebClinet实现SharePoint上文档库中文件的上传与下载
微软的SharePoint 提供了强大的文档管理功能,能够创建各种类型的文档库,并对文档进行相应的管理.所以我们的产品也打算将文件用SharePoint来管理,实现文档的共享访问.于是,就产生了用客户 ...
- php中upload函数,PHP中文件的上传和下载常用函数
文件的上传 1.html标签需要做的上传设置 1) form标签属性设置 1>method设置为post 2>enctype设置为multipart/form-data 3>form ...
- FtpWebRequest(转)---关于C/S中文件的上传,下载,获得文件列表
微软的.net framework 2.0相对于1.x来说增加了对FTP的支持.以前为了符合我的需求,我不等不使用第三方类库来实现FTP功能,但是为了可靠,还是使用.net framework的类比较 ...
- JSP中文件的上传与下载示例
转自:http://www.2cto.com/kf/201406/312486.html 一.文件上传的原理 1.文件上传的前提: a.form表单的method必须是post b.form表单的en ...
- java中文件的上传和下载:文件上传和下载原理
在TCP/IP中,我们知道最早的上传机制为FTP,它是指将文件由客户端发送到服务器的标准机制.然而我们在jsp编程中不能使用FTP来上传文件,这是由于jsp运行机制决定的. ...
- nginx java文件上传_Nginx实现文件的上传和下载
文件的上传只要保证特殊的地址先到达Nginx,然后通过Nginx指定至指定的服务器即可,目前配置是本机.文件的下载的做法就是把本机的当前目录下面的文件给返回回去. server { listen ; ...
最新文章
- ubuntu配置jdk环境
- mysql 一键安装 linux_linux下mysql8 shell脚本一键安装
- 实际程序调用IndexWriter* writer = NULL
- 跳转路径时资源路径加/和不加/的区别
- ios ionic3 跳转第三方地图 xcode加入白名单
- c语言程序设计2014春第一套作业,C语言程序设计2014春第一套作业
- uva1628 最优路径问题
- .Net Core 之 MSBuild 介绍
- java中随机数彩票练习_基于javascript实现彩票随机数生成(简单版)
- 【HDU - 2639】Bone Collector II (第K大背包,dp,STLset)
- 操作系统之虚拟存储管理
- 快看,我们的分布式缓存就是这样把注册中心搞崩塌的!
- Mac双网卡路由设置实现内外网同时访问
- 八大数据结构及常见面试题
- 使用R语言进行一元回归
- 在SCI-Hub上下载国外论文
- Moneybookers支付方式开发
- 炫酷的时间HTML页面,炫酷css3垂直时间轴特效
- 2021年计算机考证真题二级题库
- ansible-playbook批量部署Zabbix