运行后生成的图像的URL; GWT

时间:2012-06-07 14:38:04

标签: java gwt servlets

我有一张上传并存储在服务器上的图片。我现在想要围绕此URL创建一个Image小部件。我的上传方法会返回图片的相对路径,例如:uploads / image.jpg。

我正在尝试生成一个URL,让我访问此图片。此方法适用于开发模式:

String imagePath = uploads/image.jpg;
Image image = new Image(GWT.getHostPageBaseURL() + imagePath.replaceAll('//', '\'));

replaceAll用于将Windows文件分隔符转换为URL分隔符。这会在部署到我的Jetty服务器时生成URL为 http:// localhost:8080 / card-designer / uploads / image.jpg 的图像。图像没有显示。

是否无法为动态创建的图像创建可访问的URL?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

  

我的上传方法返回图片的相对路径

相对于什么?磁盘上的文件存储在哪里?这似乎需要配置jetty。你需要告诉jetty这个url对应一个图像,它应该服务它。

请参阅Jetty文档中的Serving Static Content

简单的解决方案是在jetty.xml中添加类似的内容

<Configure class="org.mortbay.jetty.handler.ContextHandler">
  <Set name="contextPath">/upload</Set>
  <Set name="resourceBase"><SystemProperty name="jetty.home" default="."/>/upload</Set>
  <Call name="addHandler">
    <Arg>
      <New class="org.mortbay.jetty.handler.ResourceHandler"/>
    </Arg>
  </Call>
</Configure>

您应该将“resourceBase”参数替换为磁盘上传目录的路径。

否则,创建自己的servlet,获取图像并将其映射到/ upload /。

我猜它在dev模式下工作,因为默认情况下,嵌入式jetty可能会提供静态内容等未知网址。