springboot本地上传图片传多张图片到指定文件夹,并把图片保存数据库同一个字段里面(前端能够使用此图片)
时间: 2023-10-08 12:05:53 浏览: 50
首先,我们需要在前端编写上传多张图片的代码,可以使用input标签的multiple属性来允许选择多张图片。例如:
```html
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="files" multiple>
<button type="submit">上传</button>
</form>
```
在后端,我们需要使用Spring Boot的MultipartFile类来处理上传的文件。我们可以使用一个循环来处理每个上传的文件,并将其保存到指定的文件夹中。例如:
```java
@RestController
public class UploadController {
private static final String UPLOAD_DIR = "path/to/upload/dir";
@PostMapping("/upload")
public List<String> upload(@RequestParam("files") MultipartFile[] files) {
List<String> fileUrls = new ArrayList<>();
for (MultipartFile file : files) {
String filename = file.getOriginalFilename();
File dest = new File(UPLOAD_DIR + "/" + filename);
try {
file.transferTo(dest);
fileUrls.add("/uploads/" + filename); // 将文件URL保存到List中
} catch (IOException e) {
e.printStackTrace();
}
}
return fileUrls;
}
}
```
在这个例子中,我们将上传的文件保存到`UPLOAD_DIR`指定的文件夹中,并将每个文件的URL保存到一个List中。接下来,我们需要将这个List保存到数据库中。
假设我们有一个名为`User`的实体类,其中有一个字段`avatarUrls`用于保存用户头像的URL。我们可以在`User`类中添加一个`setAvatarUrls(List<String> fileUrls)`方法,用于将上传的文件URL保存到该字段中。例如:
```java
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ElementCollection
private List<String> avatarUrls;
// getter 和 setter 方法
// ...
public void setAvatarUrls(List<String> fileUrls) {
this.avatarUrls = fileUrls;
}
}
```
最后,在上传文件的Controller中,我们可以使用JPA将这个List保存到数据库中。例如:
```java
@RestController
public class UploadController {
// ...
@Autowired
private UserRepository userRepository;
@PostMapping("/upload")
public List<String> upload(@RequestParam("files") MultipartFile[] files) {
// ...
User user = userRepository.findById(userId).orElse(null);
if (user != null) {
user.setAvatarUrls(fileUrls);
userRepository.save(user);
}
return fileUrls;
}
}
```
在这个例子中,我们使用`userRepository`来获取指定的用户对象,并将上传的文件URL保存到其`avatarUrls`字段中。最后,我们使用`userRepository.save(user)`将用户对象保存到数据库中。
这样,前端就可以通过访问用户对象的`avatarUrls`字段来获取上传的图片了。例如:
```html
<img src="${user.avatarUrls[0]}" alt="用户头像">
```