【SpringMVC】| 使用SpringMVC实现文件上传 | 下载功能

这篇具有很好参考价值的文章主要介绍了【SpringMVC】| 使用SpringMVC实现文件上传 | 下载功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 🦁 前言

SpringMVC是一个Web框架,提供了许多有用的功能,包括文件上传和下载。通过SpringMVC上传和下载文件,您可以允许用户上传文件,以便将它们存储在服务器上,或者允许用户从服务器上下载文件。这些都可以为您的应用程序添加有用的功能,例如:

  1. 允许用户上传和共享文件 - 如果您的应用程序需要允许用户上传和共享文件,那么SpringMVC的文件上传功能将非常有用。

  2. 允许用户从服务器下载文件 - 如果您的应用程序需要允许用户从服务器上下载文件,那么SpringMVC的文件下载功能将非常有用。

  3. 存储和管理文件 - SpringMVC的文件上传功能还可以帮助您存储和管理用户上传的文件,例如,您可以将它们保存在数据库中或在服务器上的特定目录中。

通过使用SpringMVC的文件上传和下载功能,您可以为您的应用程序添加有用的功能,并提供更好的用户体验。
接下来一起探索一下SpringMVC上传以及下载文件的功能实现!!!

二. 🦁 文件上传 & 下载

1. 文件上传

SpringMVC使用框架提供的文件解析器对象,可以直接将请求体中的文件数据转为MultipartFile对象

tips:

分布式系统不适合使用

Ⅰ. 上传单个文件

// MultipartFile参数名必须和JSP文件空间的name属性一致
@RequestMapping("/fileUpload2")
public String upload2(MultipartFile file,HttpServletRequest request) throws IOException {
  // 创建文件夹,存放上传文件
  String realPath = request.getSession().getServletContext().getRealPath("/upload");
  File dir = new File(realPath);
  if(!dir.exists()){
    dir.mkdirs();
   }
  // 将上传的数据写到文件夹的文件中
  // 1.拿到上传的文件名
  String filename = file.getOriginalFilename();
  filename = UUID.randomUUID()+"_"+filename;
  // 2.创建空文件
  File newFile = new File(dir,filename);
  // 3.将数据写入空文件中
  file.transferTo(newFile);


  return "index";
}

Ⅱ. 上传多个文件

处理多文件上传,参数类型为MultipartFile数组,参数名和JSP文件控件的name属性一致

// 处理多文件上传,参数类型为MultipartFile数组,参数名和JSP文件控件的name属性一致
@RequestMapping("/fileUpload3")
public String upload3(MultipartFile files[],String username,HttpServletRequest request) throws Exception {
  System.out.println(username);
  //1.设置上传文件保存的文件夹
  String realPath = request.getSession().getServletContext().getRealPath("/upload");
  File dir = new File(realPath);
  if (!dir.exists()){
    dir.mkdirs();
   }
  //2.遍历数组,将上传文件保存到文件夹
  for(MultipartFile file:files){
    String filename = file.getOriginalFilename();
    filename = UUID.randomUUID()+"_"+filename;
    File newFile = new File(dir, filename);
    file.transferTo(newFile);
   }
  return "index";
}

Ⅲ. 异步上传

前两个上传方案,在上传成功后都会跳转页面。而在实际开发中,很多情况下上传后不进行跳转,而是进行页面的局部刷新,比如:

上传头像成功后将头像显示在网页中。这时候就需要使用异步文件上传。

@RequestMapping("/fileUpload4")
//不进行页面跳转
@ResponseBody
public String upload3(HttpServletRequest request, MultipartFile file) throws Exception {
  // 创建文件夹,存放上传文件。
  String realPath = request.getSession().getServletContext().getRealPath("/upload");
  File dir = new File(realPath);
  if (!dir.exists()){
    dir.mkdirs();
   }
  // 拿到上传文件名
  String filename = file.getOriginalFilename();
  filename = UUID.randomUUID()+"_"+filename;
  // 创建空文件
  File newFile = new File(dir, filename);
  // 将上传的文件写到空文件中
  file.transferTo(newFile);
  // 返回文件的路径
  return "/upload/"+filename;
}

Ⅳ. 跨服务器上传

【SpringMVC】| 使用SpringMVC实现文件上传 | 下载功能

tips:

如果是以tomcat作为图片服务器:

  1. 需要在tomcat的webapps下创建upload目录作为文件上传目录。
  2. 修改tomcat的 conf/web.xml 文件,支持跨服上传。
  3. 修改tomcat的 conf/server.xml 文件,修改tomcat端口,修改完开启tomcat服务器

【SpringMVC】| 使用SpringMVC实现文件上传 | 下载功能

1. 添加跨服上传依赖
<!-- 跨服上传 -->
<dependency>
  <groupId>com.sun.jersey</groupId>
  <artifactId>jersey-core</artifactId>
  <version>1.18.1</version>
</dependency>
<dependency>
  <groupId>com.sun.jersey</groupId>
  <artifactId>jersey-client</artifactId>
  <version>1.18.1</version>
</dependency>

2. 创建控制器方法

该方法在接受到上传请求后将文件保存到其他服务器上。

@RequestMapping("/fileUpload5")
@ResponseBody
public String upload4(HttpServletRequest request, MultipartFile file) throws Exception {
  // 设置跨服上传的服务器路径
  String path = "http://localhost:8081/upload/";
  // 获取上传的文件名
  String filename = file.getOriginalFilename();
  filename = UUID.randomUUID()+"_"+filename;
  // 跨服上传:
  // 1.创建客户端对象
  Client client = Client.create();
  // 2.使用客户端对象连接图片服务器
  WebResource resource = client.resource(path + filename);
  //3.传输数据
  resource.put(file.getBytes());
  return path+filename;
}

2. 文件下载

【SpringMVC】| 使用SpringMVC实现文件上传 | 下载功能

// 文件下载
@RequestMapping("/download")
public void fileDown(HttpServletRequest request, HttpServletResponse response,String fileName) throws IOException {
  // 设置响应头
  response.setHeader("Content-Disposition","attachment;filename="+fileName);
  // 获取文件路径
  String path = request.getSession().getServletContext().getRealPath("/upload");
  File file = new File(path,fileName);
  // 获取字节输出流
  ServletOutputStream os = response.getOutputStream();
  // 使用输出流写出文件
  os.write(FileUtils.readFileToByteArray(file));
  os.flush();
  os.close();
}

三. 🦁 总结

到了文章的尾声,咱们这一期的分享结束,下期见!!!文章来源地址https://www.toymoban.com/news/detail-433979.html

到了这里,关于【SpringMVC】| 使用SpringMVC实现文件上传 | 下载功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringMVC之文件上传下载以及jrebel的使用

    目录 一、文件上传 1.1 导入依赖 1.2 配置文件上传解析器 1.3 配置服务器存放文件地址 1.3.1 点击编辑Configurations 1.3.2 将项目部署至tomcat服务器上 1.3.3 配置相对路径 1.4 导入PropertiesUtil工具类 1.5 编写resource.properties 1.6 添加sql 1.7 编写PageController类 1.8 编写主页展示界面 1.9 编

    2024年02月09日
    浏览(30)
  • SpringMVC 文件上传和下载

    Spring MVC 提供了简单而强大的文件上传和下载功能。 下面是对两者的简要介绍: 文件上传: 在Spring MVC中进行文件上传的步骤如下: 在表单中设置 enctype=“multipart/form-data”,这样浏览器会将表单数据以二进制流的形式进行传输。 在控制器方法中,使用 @RequestParam 注解来接收

    2024年01月17日
    浏览(32)
  • SpringMVC之文件上传和下载

    实现下载文件和上传文件的功能。 使用ResponseEntity实现下载文件的功能 文件上传要求form表单的请求方式必须为post,并且添加属性enctype=“multipart/form-data” SpringMVC中将上传的文件封装到MultipartFile对象中,通过此对象可以获取文件相关信息。 步骤: 添加依赖 在SpringMVC的配置

    2024年02月10日
    浏览(49)
  • Java Web 实现文件上传和下载接口功能

    上传用post或者get请求都可以,这里代码中用post做的示例。 文件下载除了静态访问(及nginx、tomcat等服务器映射到后的文件web路径)下载以外 ,还可以通过流的方式下载,代码如下: 上传用post或者get请求都可以,这里代码中用post做的示例。  ForbiddenException 访问权限异常类

    2024年02月11日
    浏览(36)
  • SpringMVC Day 08 : 文件上传下载

    文件上传和下载是 Web 开发中的重要环节,但它们往往不那么容易实现。幸运的是,Spring MVC 提供了一套简单而又强大的解决方案,让我们可以专注于业务逻辑,而不必过多关注底层的文件处理细节。 在本篇博客中,我们将学习如何利用 Spring MVC 实现文件上传和下载功能。首

    2024年02月06日
    浏览(30)
  • 11、SpringMVC之文件下载和上传

    创建名为spring_mvc_file的新module,过程参考9.1节和9.5节 注意:springmvc 根据bean的id来获取文件解析器,因此必须设置 id 属性,且属性值必须为 multipartResolver 如果上传了同名的文件,那新的文件就会覆盖旧的文件; 因此需要通过一个机制,保证上传后的文件名的不会和新上传的

    2024年02月05日
    浏览(29)
  • 一张图带你学会入门级别的SpringBoot实现文件上传、下载功能

    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:SpringBoot实战 标题 一文带你学会使用SpringBoot+Avue实现短信通知功能(含重要文件代码) 一张思维导图带你学会Springboot创

    2024年02月12日
    浏览(63)
  • SpringBoot整合hdfs,实现文件上传下载删除与批量删除,以及vue前端发送请求,实现前后端交互功能;

    部分工具类代码参考文章:https://blog.csdn.net/qq_27242695/article/details/119683823 前端实现效果 HDFSController HDFS FileInterface (文件接口) HDFS FileImplService (文件接口实现类) HDFSConfig(从yaml读取文件) HDFSUTils 前端vue代码:

    2024年02月16日
    浏览(67)
  • 使用postman实现文件上传与下载

    文件上传:  1. 设置KEY值为Content-Type, VALUE值为multipart/form-data 2. 选择Body ,类型为form-data,KEY值下拉选择为file,这样VALUE就会出现选择按钮,最重要的是,KEY值的file需要手动添加,不然后台收到的为null 文件下载:  1. 设置为GET请求 2.将文件下载时Header的Content-Type取消勾选

    2024年02月09日
    浏览(29)
  • 使用puppeteer完成监听浏览器下载文件并保存到自己本地或服务器上完成上传功能

    获取网站点击的下载pdf,并把pdf重命名再上传到COS云上面 “puppeteer”: “^19.7.2”, “egg”: “^3.15.0”, // 服务期用egg搭的 文件服务使用COS腾讯云 获取浏览器下载事件,并把文件保存到本地 在保存到本地前监听此文件夹,如果有文件则获取并上传 加timer做防抖是为了防止在文

    2024年04月15日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包