我正在使用Tapestry 5.3和jetty 9.我想从文件系统显示图像(例如:“/ opt / images /”)是否可以从文件系统中的外部文件夹创建资产?任何帮助将不胜感激。谢谢〜
答案 0 :(得分:0)
您可以从事件处理程序返回StreamResponse
爪哇
@Inject
private ComponentResources resources;
public StreamResponse onExternalImage(final String someArg) {
return new StreamResponse() {
public String getContentType() {
return "image/jpeg";
}
public InputStream getStream() {
// todo implement
// be very careful you don't allow a hacker to
// access your entire file system using ../../ etc
}
public void prepareResponse(Response response) { }
};
}
public Link getExternalImageLink(String someArg) {
return resources.createEventLink("externalImage", someArg);
}
TML
<img src="${getExternalImageLink('foo')}" />
<img src="${getExternalImageLink('bar')}" />
请注意,使用本地文件系统通常是一个坏主意。如果文件是静态的,最好从类路径中获取。如果文件不是静态的,则应考虑存储在数据库/ blobstore中。
访问本地文件系统会引发许多问题,包括事务,并发和安全性,通常应该避免使用