这篇文章主要介绍,如何在springboot工程作为服务器,去接收通过http 上传的multi-file的文件。

构建工程

为例创建一个springmvc工程你需要spring-boot-starter-thymeleaf和 spring-boot-starter-web的起步依赖。为例能够上传文件在服务器,你需要在web.xml中加入标签做相关的配置,但在sringboot 工程中,它已经为你自动做了,所以不需要你做任何的配置。

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency></dependencies>

  

创建文件上传controller

直接贴代码:

@Controller
public class FileUploadController {private final StorageService storageService;@Autowiredpublic FileUploadController(StorageService storageService) {this.storageService = storageService;}@GetMapping("/")public String listUploadedFiles(Model model) throws IOException {model.addAttribute("files", storageService.loadAll().map(path ->MvcUriComponentsBuilder.fromMethodName(FileUploadController.class, "serveFile", path.getFileName().toString()).build().toString()).collect(Collectors.toList()));return "uploadForm";}@GetMapping("/files/{filename:.+}")@ResponseBodypublic ResponseEntity<Resource> serveFile(@PathVariable String filename) {Resource file = storageService.loadAsResource(filename);return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\""+file.getFilename()+"\"").body(file);}@PostMapping("/")public String handleFileUpload(@RequestParam("file") MultipartFile file,RedirectAttributes redirectAttributes) {storageService.store(file);redirectAttributes.addFlashAttribute("message","You successfully uploaded " + file.getOriginalFilename() + "!");return "redirect:/";}@ExceptionHandler(StorageFileNotFoundException.class)public ResponseEntity handleStorageFileNotFound(StorageFileNotFoundException exc) {return ResponseEntity.notFound().build();}}

  

这个类通过@Controller注解,表明自己上一个Spring mvc的c。每个方法通过
@GetMapping 或者@PostMapping注解表明自己的 http方法。

  • GET / 获取已经上传的文件列表
  • GET /files/{filename} 下载已经存在于服务器的文件
  • POST / 上传文件给服务器

创建一个简单的 html模板

为了展示上传文件的过程,我们做一个界面:
在src/main/resources/templates/uploadForm.html

<html xmlns:th="http://www.thymeleaf.org">
<body><div th:if="${message}"><h2 th:text="${message}"/></div><div><form method="POST" enctype="multipart/form-data" action="/"><table><tr><td>File to upload:</td><td><input type="file" name="file" /></td></tr><tr><td></td><td><input type="submit" value="Upload" /></td></tr></table></form></div><div><ul><li th:each="file : ${files}"><a th:href="${file}" th:text="${file}" /></li></ul></div></body>
</html>

  

上传文件大小限制

如果需要限制上传文件的大小也很简单,只需要在springboot 工程的src/main/resources/application.properties 加入以下:

spring.http.multipart.max-file-size=128KB
spring.http.multipart.max-request-size=128KB

  

架构代码如下 :

资料和源码来源地址

转载于:https://www.cnblogs.com/xiamudaren/p/8416472.html

企业级 SpringBoot 教程 (十七)上传文件相关推荐

  1. springboot使用ajax上传文件

    SpringBoot使用Ajax上传文件 接上一个上传文件操作 上次使用的是from表单进行提交 这次我们使用ajax进行提交 地址在这儿:springboot上传文件 上次controller层已经 ...

  2. SpringBoot MultipartFile 监控上传文件进度

    # SpringBoot MultipartFile监控上传文件进度>引用块内容 在一次项目中需要监控文件上传的进度.将进度监控到之后计算百分比,存入session中session需要配置实时生 ...

  3. SpringBoot+El-upload实现上传文件到通用上传接口并返回文件全路径(若依前后端分离版源码分析)

    场景 SpringBoot+ElementUI实现通用文件下载请求(全流程图文详细教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  4. SpringBoot设置全局上传文件路径并上传文件

    前言 在后端处理文件上传的时候,我们通上传文件的时候,一般这个路径不会随便写. 比如这篇文章中的路径:解决SpringBoot文件上传报错:org.apache.tomcat.util.http.fi ...

  5. springboot整合minio上传文件

    1.安装minio 这里采用docker进行安装. 搜索该镜像:docker search minio 找到了镜像:minio/minio 拉取镜像:docker pull minio/minio 启 ...

  6. springboot urlresource_Spring Boot上传文件+部署到Tomcat

    1 概述 Spring Boot上传文件,根据官方uploadfile示例修改的,可以打成war放到服务器上(笔者使用的是Tomcat).主要步骤是创建异常类,属性类,接口类与控制器类,最后进行少量修 ...

  7. app文件上传到服务器教程,app上传文件到云服务器

    app上传文件到云服务器 内容精选 换一换 本节操作以CentOS操作系统为例,介绍配置SFTP.使用SFTP上传或下载文件.文件夹的操作步骤.以root用户登录云服务器.执行以下命令查看ssh版本, ...

  8. Springboot通过SFTP上传文件到服务器

    流程是这样的: 前端选择文件上传-------->调用后台接口,后台连接服务器(Linux)--------->上传成功  前端无论是通过ajax,还是form表单直接提交都可以,这里暂时 ...

  9. springboot使用ServletFileUpload上传文件

    前端 upload.html <HTML> <HEAD><title>上传文件</title> </HEAD> <body> & ...

  10. fileinput 加 ftp 加 nginx 加 SpringBoot上传文件

    亲测可用 准备linux服务器  https://www.cnblogs.com/shuaifing/p/8268949.html 搭建ftp https://www.cnblogs.com/shua ...

最新文章

  1. Nginx出现“413 Request Entity Too Large”错误解决方法
  2. 强化学习(一)——专业术语及OpenAI Gym介绍
  3. ios 修复 内存泄露_iOS 内存泄漏如何解决
  4. 数据结构之基于顺序表的插入排序
  5. SQL相关路径查询脚本
  6. Java反序列化漏洞研究
  7. Android使用ksoap2调用C#中的webservice实现图像上传
  8. 批量提取html文件数据库,风越批量文本提取器
  9. 计算机网络课程设计实验报告
  10. 微信小程序代码大全分享
  11. 网络工程师经常会面对服务器性能,下半网络工程师试卷(下午).doc
  12. 大规模分布式爬虫系统中Kafka和rabbitMQ消息中间件的技术实践分享
  13. matlab机械臂工作空间代码_焊接机械臂工作站的搭建与组装|焊枪|焊机|电缆|机器人...
  14. 本地文件搜索神器 --- Everything软件,快速搜索本地磁盘上的文件
  15. php k线公式源码,黄金K线主图源码
  16. ARM CORTEX M3
  17. 2021-10-16windows系统还原点创建/查看/配置/删除
  18. RocketMQ 问题记录
  19. 查询出部门名称、部门的员工数、部门的平均工资、部门的最低收入雇员姓名和最高收入雇员的姓名...
  20. 计算机毕业设计Java学生心理健康信息咨询系统(源码+系统+mysql数据库+Lw文档)

热门文章

  1. WWF系列之----关于Host与WorkflowInstance之间的通讯
  2. Android studio | From Zero To One —— Hello Android
  3. ROS | ROS2安装(Ubuntu 16.04版本:通过Debian包安装)
  4. 开发实践 | Android开发Zegbee 温度、气体采集系统(代码类)
  5. Qt学习(五):TCP通信
  6. windows10设置开机自启动
  7. 项目打包publicpath_将项目部署至github和码云
  8. GetClientRect()和GetWindowRect()
  9. php获取微信收款记录,微信公众号开发之微信支付代码记录的实现
  10. 【深度学习】动漫风格迁移AnimeGANv2,发布线上运行Demo