gpt4 book ai didi

java - 在 Tomcat 嵌入服务器上上传并获取图像(Heroku Deploy)Spring MVC

转载 作者:行者123 更新时间:2023-12-01 16:24:31 26 4
gpt4 key购买 nike

我是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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com