2019独角兽企业重金招聘Python工程师标准>>>

这篇文章主要介绍,如何在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

架构代码如下 :

Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求:一零三八七七四六二六

转载于:https://my.oschina.net/u/3826344/blog/3025532

Java springcloud B2B2C o2o多用户商城 springcloud架构 (十七)上传文件相关推荐

  1. (十四)Java springcloud B2B2C o2o多用户商城 springcloud架构- Spring Cloud构建分布式电子商务平台...

    通过Spring Cloud构建PC+微信+APP+云服务的云商平台系统,其中包括B2B.B2C.C2C.O2O.新零售.直播电商等子平台,之前我们讲了很多关于Spring Cloud的概念文章,从本 ...

  2. Java springcloud B2B2C o2o多用户商城 springcloud架构

    Spring cloud b2b2c电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.用java实施的电子商务平台太少了,使用spring cloud技术构建的b2b2c电子商务平台更少,大型企 ...

  3. (十五)Java springcloud B2B2C o2o多用户商城 springcloud架构-commonservice-sso服务搭建(一)...

    2019独角兽企业重金招聘Python工程师标准>>> 前面几篇我们已经介绍了Spring Cloud和oauth2的知识点,今天我们要利用Spring Cloud和oauth2进行 ...

  4. Java springcloud B2B2C o2o多用户商城 springcloud架构 (二十二)创建含有多module的springboot工程...

    这篇文章主要介绍如何在springboot中如何创建含有多个module的工程,栗子中含有两个 module,一个作为libarary. 工程,另外一个是主工程,调用libary .其中libary ...

  5. (十七)Java springcloud B2B2C o2o多用户商城 springcloud架构-消息驱动 Spring Cloud Stream...

    在使用spring cloud云架构的时候,我们不得不使用Spring cloud Stream,因为消息中间件的使用在项目中无处不在,我们公司后面做了娱乐方面的APP,在使用spring cloud ...

  6. Java springcloud B2B2C o2o多用户商城 springcloud架 (二): 配置管理

    使用Config Server,您可以在所有环境中管理应用程序的外部属性.客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring ...

  7. (十)Java B2B2C o2o多用户商城 springcloud架构- SSO单点登录之OAuth2.0登录认证(1)

    2019独角兽企业重金招聘Python工程师标准>>> 之前写了很多关于spring cloud的文章,今天我们对OAuth2.0的整合方式做一下笔记,首先我从网上找了一些关于OAu ...

  8. Java B2B2C o2o多用户商城 springcloud架构-docker-feign-hystrix(六)

    2019独角兽企业重金招聘Python工程师标准>>> 简介 上一节我们讨论feign的配置,这节我们讨论一下,feign+hystrix调用生产者时,进行容错处理 一.创建模块(m ...

  9. (四)Java B2B2C o2o多用户商城 springcloud架构-断路器(Hystrix)

    2019独角兽企业重金招聘Python工程师标准>>> 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestT ...

最新文章

  1. 以太坊去中心化_开发以太坊去中心化投票应用程序的指南
  2. TensorFlow的基础概念03
  3. NodeJS API Process全局对象
  4. android h5使用缓存_程序员必须了解的之小程序 与 App 与 H5 之间的区别
  5. app启动调用的api
  6. getInitParameter方法
  7. POWERPCB常用技巧
  8. Delphi 105错误
  9. 位运算的应用和分治法在二进制中的应用
  10. 园区交换网络和路由网络综合设计,测试完工啦
  11. 转录组测序多少生物重复合适?2个?3个?48个?
  12. 【剑指Offer】20包含min函数的栈
  13. python中的return的返回与执行
  14. 语音信号处理基础(二)
  15. apache cxf 测试webservice接口
  16. 百度关键词模拟点击破解版 SEO排名优化神器
  17. 有限元基础及ANSYS应用 - 第4节 - 平面桁架结构的ANSYS分析
  18. MATLAB中median函数
  19. 列举1990年到2000年间的闰年
  20. 手机配音用哪个软件?推荐下面这几款软件

热门文章

  1. SQLite的事务和锁
  2. JS判断GridView中复选框有没有被选中
  3. STL Priority_Queue
  4. 图解在Windows下使用vim(gvim)
  5. 版本管理器命令行总结
  6. MySQL主键学习总结
  7. Maven安装与配置详解(Win10)
  8. 简要描述cookie和session的区别:
  9. Html和CSS的关系
  10. PHP header的几种用法