springboot实现本地存储文件上传及提供http访问服务404
时间: 2023-09-03 15:01:41 浏览: 142
Spring Boot可以很方便地实现本地存储文件上传和提供HTTP访问服务,出现404错误可能是由于配置不正确或路径错误导致的。下面是一个简单的步骤,帮助你解决问题:
1. 在`application.properties`或`application.yml`文件中配置文件上传的路径和访问路径:
```
# 配置上传文件的存储路径
spring.servlet.multipart.location=你的本地存储路径
# 配置允许访问的文件大小,例如10MB
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
# 配置允许访问的文件类型,例如图片类型
spring.servlet.multipart.allowed-file-extensions=jpg,jpeg,png
```
或者使用`MultipartProperties` Bean进行配置:
```java
@Configuration
@ConfigurationProperties(prefix = "spring.servlet.multipart")
public class MultipartProperties {
// 配置上传文件的存储路径
private String location;
// 配置允许访问的文件大小
private String maxFileSize;
// 配置允许访问的文件类型
private String[] allowedFileExtensions;
// ...
}
```
2. 创建一个Controller,处理文件上传和访问的请求:
```java
@RestController
public class FileController {
// 处理文件上传的请求
@PostMapping("/upload")
public String handleFileUpload(@RequestParam("file") MultipartFile file) {
// 将文件存储到本地存储路径
// ...
return "上传成功";
}
// 处理文件访问的请求
@GetMapping("/file/{filename}")
public ResponseEntity<Resource> serveFile(@PathVariable String filename) {
// 从本地存储路径获取文件并提供访问服务
// ...
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"")
.body(resource);
}
}
```
注意,文件上传请求需要使用`@RequestParam`注解,而文件访问请求需要使用`@PathVariable`注解。
3. 进行文件上传和访问的测试:
- 使用HTTP工具(如Postman)发送文件上传请求(POST请求)到`/upload`接口,指定文件参数名为`file`。
- 使用浏览器或HTTP工具发送文件访问请求(GET请求)到`/file/{filename}`接口,其中`{filename}`为上传的文件名。
如果你仍然遇到404错误,可以检查以下几个可能的原因:
- 文件上传路径是否存在,访问路径是否正确配置。
- 文件上传请求的方法和URL是否正确。
- 文件访问请求的方法和URL是否正确。
- Controller是否被正确扫描和映射。
- 是否添加了必要的依赖,如`spring-boot-starter-web`和`spring-boot-starter-tomcat`。
希望以上解答能够帮助你解决问题。
阅读全文