在 Spring 引导中存储和显示图像

Store and Display Image in Spring Boot

我正在尝试保存徽标(在项目中而不是在数据库中)并获取它并将其显示在 JSP 页面上 为此,我将图像的 URL 保存在数据库但是当我获取它时我没有得到图像这里是我的代码和项目结构的屏幕截图请在这里帮助我请让我知道这是正确的文件夹还是我应该将图像保存在其他地方谢谢。

文件保存方式

public static String storeLogoPath(MultipartFile file) {
        logger.info("File AAYA HAI " + file);
        String path = "";
        try {
            //String paths = "G:/MainWorkSpace/Picture_testing/WebContent/resources/images/"+file.getOriginalFilename();
            path = "G:/MainWorkSpace/TestProjects/ecomProject/src/main/resources/static/img/storeLogo/"+file.getOriginalFilename();
            File newFile = new File(path);
            newFile.createNewFile();
            FileOutputStream myfile = new FileOutputStream(newFile);
            myfile.write(file.getBytes());
            myfile.close();
            logger.info("File should be saved now :: ");
        } catch (Exception e) {
            e.printStackTrace();
        }

        return path;
    }

控制器方法

@RequestMapping(value = "/storeFormshow" ,method = RequestMethod.GET)
    public String addStoreForm(Model theModel) {
        Stores storeObj = new Stores();
        theModel.addAttribute("storeForm",storeObj);
        return "Store/storeForm";
    }

JSP 列表页

<%@include file="/WEB-INF/views/Store/StoreTemplet/Header.jsp"%>


<div class="content-wrapper">
                <table class="table" id="table_id">
                    <thead>
                        <tr>
                            <th>Logo</th>
                            <th>ID</th>
                            <th>Store Name</th>
                            <th>Country</th>
                            <th class="text-center">Store Status</th>

                        </tr>
                    </thead>
                    <tbody>

                        <c:forEach var="store" items="${storeList}">
                            <tr>
                            <td> <img src="${store.logoURL}" width="10" height="10"> </td>
                                <td>${store.id}</td>
                                <td><a>${store.storeName}</a></td>
                                <td>${store.country}</td>
                                <td>${store.storeStatus}</td>
                            </tr>
                        </c:forEach>
                    </tbody>
                </table>
</div>

<%@include file="/WEB-INF/views/Store/StoreTemplet/Footer.jsp"%>

项目结构

为图片返回的 URL G:/MainWorkSpace/TestProjects/ecomProject/src/main/resources/static/img/storeLogo/Screenshot_2018-07-11-21-46-48.jpg

应用程序属性

spring.mvc.view.prefix: /WEB-INF/views/
spring.mvc.view.suffix: .jsp


spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB

将您的图像添加到 resources/static 文件夹,然后在 img 标签中像下面那样访问它们

<img src="/images/solr.png" height="50" width="50">
public static String storeLogoPath(MultipartFile file) {
    logger.info("File AAYA HAI " + file);
    String path = "";
    try {
        path = "G:/MainWorkSpace/TestProjects/ecomProject/src/main/resources/static/img/storeLogo/"+file.getOriginalFilename();
        File newFile = new File(path);
        newFile.createNewFile();
        FileOutputStream myfile = new FileOutputStream(newFile);
        myfile.write(file.getBytes());
        path ="/img/storeLogo/"+file.getOriginalFilename();
        myfile.close();
        logger.info("File should be saved now :: ");
    } catch (Exception e) {
        e.printStackTrace();
    }
    logger.info("Path Returned is ::: "  + path);
    return path;
}

我已经从静态文件夹中修剪了路径并将其保存在数据库中

这不是正确的做法,但对我有用