【问题标题】:Unable to load image saved to file system using spring url tag无法使用 spring url 标签加载保存到文件系统的图像
【发布时间】:2012-08-10 07:52:48
【问题描述】:

我正在使用它在我的控制器中保存上传的图像

saveImage(context.getRealPath("/resources/image.jpg"), image);

然后尝试使用这个将图像加载到 JSP 中

<img src="<c:url value="/resources/image.jpg"/>" />

我可以在浏览器地址栏中使用它访问图像

home/user/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/SpringMVCTest/resources/image.jpg

但是图片没有加载到jsp中,只有一个断开的链接图片。

我还使用&lt;mvc:resources mapping="/resources/**" location="/resources" /&gt; 来提供静态内容。

为什么这不起作用?

简单的答案。一切都是正确的,除了我错过了一个“/”

<mvc:resources mapping="/resources/**" location="/resources" />

应该是

<mvc:resources mapping="/resources/**" location="/resources/" />

【问题讨论】:

    标签: java jsp url spring-mvc image


    【解决方案1】:

    路径

    home/user/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/SpringMVCTest/resources/image.jpg

    是您服务器的文件系统路径,您的客户端将无法访问它,

    宁可将图片放在公共网络区域,并给出相对路径,例如

    /contextofyourweb/images/1.jpeg
    

    或创建一个 ImageServlet,它从服务器文件系统中读取文件并将其放入 servlet 响应

    相关:

    【讨论】:

    • 我只给出了文件系统路径来显示正在保存的图像。我的控制器映射到“/”,因此使用了资源标签。由于图像被保存到 /contextofmyweb/resources/image.jpg 为什么不能从那里检索?
    • 哦,好的,那么它与公共网络区域有关吗?
    • 我的应用中没有公共网络区域。
    • 然后写image servlet从文件系统读取,写image响应,如图here
    • 对于这样简单的事情,没有必要在 jsp 中使用 Java 代码。谢谢你的建议。
    【解决方案2】:

    我也有同样的问题。我的要求是视图的 Html5 和 Jquery,没有 JSP。我有模拟用 C 编写的服务器的 Spring MVC 应用程序。

    我的spring MVC配置:

        <mvc:resources mapping="/resources/**" location="/resources" />
    

    由于无法使用标签,我找到了一个有效的 jQuery 解决方案:

        $(function(){
            var ctxRoot = window.location.pathname;
            var imgBtn1Url="/"+ctxRoot.split("/")[1]+"/resources/img/glyphs/glyphicons_173_play.png";
            alert(imgBtn1Url)
            $('#imgBtn1').attr('src', imgBtn1Url);
        });
    

    HTML:&lt;img id="imgBtn1" alt="" data-src="holder.js/300x200" class="thumbnail" /&gt;

    在我的例子中 ctxRoot=/viper/config 因为 spring Dispatcher Servlet 的 url 模式。在您的情况下 location.pathname 可能就足够了。

       <servlet-mapping>
            <servlet-name>conf</servlet-name>
            <url-pattern>/config/*</url-pattern>
       </servlet-mapping>
    

    我希望其他使用 Spring MVC 的人会觉得这很有帮助。

    【讨论】:

      【解决方案3】:

      您应该将图像保存在项目文件之外的文件夹中,因为一旦重新部署它,您肯定会丢失提取目录中的文件。

      最好将图像保存在某个保存位置,我敢肯定,您将路径保存在数据库中,这些图像需要独立于您的部署和 webcontent 文件夹中的目录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-12
        • 1970-01-01
        • 2015-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多