使用springboot做个文件上传接口吧 传到本地 然后查询出来展示
时间: 2023-12-03 07:03:25 浏览: 89
基于springboot实现的文件下载上传
好的,可以使用 Spring Boot 来实现文件上传接口。下面是一个简单的示例,可以将上传的文件保存到本地,并提供查询接口来展示已上传的文件。
首先,需要添加相关的依赖。在 `pom.xml` 文件中添加如下依赖:
```xml
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
```
接下来,创建一个控制器类来处理文件上传和查询操作。在该类中定义两个接口:`uploadFile` 和 `getUploadedFiles`。
```java
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Controller
@RequestMapping("/files")
public class FileController {
@Value("${upload.dir}")
private String uploadDir;
@PostMapping("/upload")
public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) {
try {
String fileName = StringUtils.cleanPath(file.getOriginalFilename());
Path filePath = Path.of(uploadDir, fileName);
Files.copy(file.getInputStream(), filePath, StandardCopyOption.REPLACE_EXISTING);
return ResponseEntity.ok("File uploaded successfully");
} catch (IOException e) {
return ResponseEntity.status(500).body("Failed to upload file");
}
}
@GetMapping
public ResponseEntity<List<String>> getUploadedFiles() {
File[] files = new File(uploadDir).listFiles();
if (files != null) {
List<String> fileNames = Arrays.stream(files)
.filter(File::isFile)
.map(File::getName)
.collect(Collectors.toList());
return ResponseEntity.ok(fileNames);
} else {
return ResponseEntity.ok().build();
}
}
}
```
在上述代码中,`uploadDir` 是文件保存的目录,通过 `@Value` 注解从配置文件中获取。`uploadFile` 方法接收一个 `MultipartFile` 对象来处理文件上传,使用 `Files.copy` 将文件保存到指定目录下。`getUploadedFiles` 方法返回已上传的文件名列表。
接下来,在 `application.properties` 文件中配置文件保存的目录:
```properties
upload.dir=/path/to/upload/directory
```
请将 `/path/to/upload/directory` 替换为你想要保存文件的目录路径。
最后,启动 Spring Boot 应用程序,并使用任意 HTTP 客户端进行测试。你可以使用 `curl` 命令或者 Postman 来测试接口。
- 上传文件:
```
curl -X POST -F "file=@/path/to/file" http://localhost:8080/files/upload
```
- 查询已上传的文件:
```
curl http://localhost:8080/files
```
以上就是一个简单的使用 Spring Boot 实现文件上传和查询的示例。你可以根据自己的需求进行进一步的扩展和修改。希望对你有帮助!如有疑问,请继续追问。
阅读全文