b2b商城源码java_微服务java_b2b商城系统_java商城源码100%开源适合2次开发 (十七)上传文件...

本文详细介绍了如何在SpringBoot应用中实现文件上传功能,包括创建控制器处理HTTP请求、处理文件上传及下载、设置文件大小限制等。通过示例代码展示了FileUploadController的实现,并提供了简单的HTML模板用于用户交互。此外,还提到了Spring Boot项目中限制上传文件大小的方法。
摘要由CSDN通过智能技术生成

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

构建工程

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

75ce08b8a72c38b11dede1d8665717b9.gif

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-starter-thymeleaf

复制代码

75ce08b8a72c38b11dede1d8665717b9.gif

创建文件上传controller

直接贴代码:

75ce08b8a72c38b11dede1d8665717b9.gif@Controller

public class FileUploadController {

private final StorageService storageService;

@Autowired

public 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:.+}")

@ResponseBody

public ResponseEntity 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();

}

}复制代码

75ce08b8a72c38b11dede1d8665717b9.gif

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

@GetMapping 或者@PostMapping注解表明自己的 http方法。GET / 获取已经上传的文件列表

GET /files/{filename} 下载已经存在于服务器的文件

POST / 上传文件给服务器

创建一个简单的 html模板

为了展示上传文件的过程,我们做一个界面:

在src/main/resources/templates/uploadForm.html

75ce08b8a72c38b11dede1d8665717b9.gif

File to upload:

复制代码

75ce08b8a72c38b11dede1d8665717b9.gif

上传文件大小限制

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

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

spring.http.multipart.max-request-size=128KB复制代码

架构代码如下 :

5867ff53e75e677c01ad4207b8ce6650.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值