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

标签 java spring spring-mvc file-upload file-storage

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

相关文章:

java - 如何从文本文件中的代码片段中查找语法特征?

java - 删除子类时,Hibernate 不会删除主行

java - 如何创建更改 GUI 中选项卡的常规操作?

spring - Jasypt 加密在升级到 JDK 7u261 后停止工作

java - 模型和 View 404 问题

java - org.hibernate.exception.GenericJDBCException : could not execute query] with root cause

java - 如何使用 FreeMarker 通过 Spring Security 成功注销

java - springboot应用程序编译错误

java - 引用 swagger-UI 的外部 URL

java - 无法使用具有构建器模式的 jackson 3+ 实例化 POJO