我是Spring(Spring MVC)的新手。我有一个任务来保存图像,上传并将其保存到服务器(嵌入Tomcat服务器)。我实现了以下代码。
@PostMapping(value = "/upload")
public String upload(HttpServletRequest request, @RequestParam("avatar") MultipartFile multipartFile, @ModelAttribute("movie") Movie movie) {
String filePath = request.getSession().getServletContext().getRealPath("/avatars/");
try {
multipartFile.transferTo(new File(filePath, multipartFile.getOriginalFilename()));
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
movie.setUrlAvatar(filePath + multipartFile.getOriginalFilename());
movieService.createMovie(movie); // Save to DB
return "redirect: home";
}
还有我的看法
<c:forEach var="item" items="${movies}">
<li>
<a href='<c:url value= "/movie/${item.getId()}"></c:url>'><img
alt="${item.getUrlAvatar()}" src='<c:url value="${item.getUrlAvatar()}"></c:url>'>
</a>
</li>
</c:forEach>
我什至尝试src='<c:url value="file:///${item.getUrlAvatar()}"></c:url>'
它不起作用!
当我无法取出照片时,我错在哪里。有什么办法可以把图像取出来吗?
你能建议我一种保存图像和删除图像的方法吗(我现在不想保存到数据库)?
谢谢大家!
最佳答案
问题位于
movie.setUrlAvatar(getBaseURL(request) + "/avatars/" + multipartFile.getOriginalFilename());
与
// get base URL
public String getBaseURL(HttpServletRequest request) {
return request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ request.getContextPath();
}
我必须这样做
File dir = new File(rootPath);
if (!dir.exists()) {
dir.mkdirs();
}
File serverFile = new File(dir.getAbsolutePath() + File.separator + avatarNewName);
然后multipartFile.transferTo(serverFile);
我在 here 找到了这个
关于java - 在 Tomcat 嵌入服务器上上传并获取图像(Heroku Deploy)Spring MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62178183/