我有一张上传并存储在服务器上的图片。我现在想要围绕此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?任何帮助将不胜感激。
答案 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可能会提供静态内容等未知网址。