0

我有一张图片上传并存储在服务器上。我现在想围绕这个 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?任何帮助将非常感激。

4

1 回答 1

0

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

相对于什么?您的文件存储在磁盘的哪个位置?这似乎您需要配置码头。你需要告诉 jetty 这个 url 对应于一个图像并且它应该提供它。

请参阅Jetty 文档中的提供静态内容

简单的解决方案是在您的 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/ 。

我猜它在开发模式下工作,因为默认情况下嵌入式码头可能会提供未知的 url,如静态内容。

于 2012-06-07T14:57:03.137 回答