pringboot本地上传图片传多张图片到指定文件夹,并把图片保存数据库同一个字段里面,逗号区分
时间: 2024-03-08 22:48:05 浏览: 90
好的,和之前的问题类似,我们可以在上传文件的Controller中使用一个List来保存上传的文件的URL,并将这个List转换成一个逗号分隔的字符串保存到数据库中。具体代码如下:
```java
@RestController
public class UploadController {
private static final String UPLOAD_DIR = "path/to/upload/dir";
@Autowired
private UserRepository userRepository;
@PostMapping("/upload")
public 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();
}
}
String avatarUrls = String.join(",", fileUrls); // 将List转换成逗号分隔的字符串
User user = userRepository.findById(userId).orElse(null);
if (user != null) {
user.setAvatarUrls(avatarUrls);
userRepository.save(user);
}
return avatarUrls;
}
}
```
在这个例子中,我们使用`String.join()`方法将上传的文件URL连接成一个逗号分隔的字符串,并将这个字符串保存到用户对象的`avatarUrls`字段中。最后,我们将用户对象保存到数据库中。
在前端展示图片时,我们需要将这个逗号分隔的字符串转换成一个数组,并循环展示每个图片。例如:
```html
<% String[] avatarUrls = user.getAvatarUrls().split(","); %>
<% for (String avatarUrl : avatarUrls) { %>
<img src="<%=avatarUrl%>" alt="用户头像">
<% } %>
```
在这个例子中,我们使用`String.split()`方法将逗号分隔的字符串拆分成一个数组,并循环展示每个图片。
阅读全文