Webcenter Sites:图像或 PDF 的虚 URL
Webcenter Sites : Vanity URLs for images or PDF
我正在使用 Webcenter Sites 12.2.1,但我有一个关于使用 vanity URLs 制作媒体模板的问题。
我的用户希望对某些媒体(如 PDF 或图像或此类 blob)具有虚荣心 URLs。对于基于文本的属性(例如 javascript 或 css),我可以这样做,但是对于基于 blob 的属性,我有点卡住了。关键是,为了对资产进行虚荣 URLs,我必须使用模板。在模板中,如果我必须显示文本,则没有问题。对于 blob,我可以获得属性,但是如果我想在不调用 blob 服务器的情况下将结果作为模板流式传输 URL,我没有得到任何可用的东西。
这是我使用的模板代码:
<%@page import="java.io.InputStream"%>
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.File"%>
<%@ page import="com.fatwire.system.*"%>
<%@ page import="com.fatwire.assetapi.data.*"%>
<%@ page import="com.fatwire.assetapi.query.*"%>
<%@ page import="java.util.*"%>
<%@ page import="com.openmarket.xcelerate.asset.*"%>
<%@ taglib prefix="cs" uri="futuretense_cs/ftcs1_0.tld"%>
<%@ taglib prefix="ics" uri="futuretense_cs/ics.tld"%>
<%@ taglib prefix="fragment" uri="futuretense_cs/fragment.tld"%>
<%@ taglib prefix="render" uri="futuretense_cs/render.tld"%>
<%@ taglib prefix="asset" uri="futuretense_cs/asset.tld"%>
<cs:ftcs>
<%
Session ses = SessionFactory.getSession();
AssetDataManager mgr =(AssetDataManager) ses.getManager( AssetDataManager.class.getName() );
AssetId id = new AssetIdImpl( "Content_R",new Long(ics.GetVar("cid")));
List attrNames = new ArrayList();
attrNames.add( "imagefile" );
AssetData data = mgr.readAttributes( id, attrNames );
AttributeData attrDataSource = data.getAttributeData( "imagefile" );
BlobObject fileObj = (BlobObject)attrDataSource.getData();
File file = new File(fileObj.getFoldername() + fileObj.getFilename());
InputStream in = new FileInputStream(file);
byte[] bytes = new byte[2048];
int bytesRead;
ServletOutputStream out2 = response.getOutputStream();
while ((bytesRead = in.read(bytes)) != -1) {
out2.write(bytes, 0, bytesRead);
}
in.close();
%>
</cs:ftcs>
我已经尝试了一种解决方法:重定向到 blob 服务器,但问题是我无法直接使用 url 作为图像 重定向不起作用.
有人试过吗?
通过 Oracle 社区找到解决方案:我必须使用控制器。
示例站点应用程序中已给出示例
http://<>:<>/sites/samples/blob_link_builder
编辑:从那时起我使用了不同的解决方案,我使用 vanity URL 作为 blob。我没有做模板,而是使用 AssetType,创建一个将应用于我的资产的 blob 属性的虚荣心 URL。这比使用任何模板来显示图像或类似内容要容易得多。
我正在使用 Webcenter Sites 12.2.1,但我有一个关于使用 vanity URLs 制作媒体模板的问题。 我的用户希望对某些媒体(如 PDF 或图像或此类 blob)具有虚荣心 URLs。对于基于文本的属性(例如 javascript 或 css),我可以这样做,但是对于基于 blob 的属性,我有点卡住了。关键是,为了对资产进行虚荣 URLs,我必须使用模板。在模板中,如果我必须显示文本,则没有问题。对于 blob,我可以获得属性,但是如果我想在不调用 blob 服务器的情况下将结果作为模板流式传输 URL,我没有得到任何可用的东西。
这是我使用的模板代码:
<%@page import="java.io.InputStream"%>
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.File"%>
<%@ page import="com.fatwire.system.*"%>
<%@ page import="com.fatwire.assetapi.data.*"%>
<%@ page import="com.fatwire.assetapi.query.*"%>
<%@ page import="java.util.*"%>
<%@ page import="com.openmarket.xcelerate.asset.*"%>
<%@ taglib prefix="cs" uri="futuretense_cs/ftcs1_0.tld"%>
<%@ taglib prefix="ics" uri="futuretense_cs/ics.tld"%>
<%@ taglib prefix="fragment" uri="futuretense_cs/fragment.tld"%>
<%@ taglib prefix="render" uri="futuretense_cs/render.tld"%>
<%@ taglib prefix="asset" uri="futuretense_cs/asset.tld"%>
<cs:ftcs>
<%
Session ses = SessionFactory.getSession();
AssetDataManager mgr =(AssetDataManager) ses.getManager( AssetDataManager.class.getName() );
AssetId id = new AssetIdImpl( "Content_R",new Long(ics.GetVar("cid")));
List attrNames = new ArrayList();
attrNames.add( "imagefile" );
AssetData data = mgr.readAttributes( id, attrNames );
AttributeData attrDataSource = data.getAttributeData( "imagefile" );
BlobObject fileObj = (BlobObject)attrDataSource.getData();
File file = new File(fileObj.getFoldername() + fileObj.getFilename());
InputStream in = new FileInputStream(file);
byte[] bytes = new byte[2048];
int bytesRead;
ServletOutputStream out2 = response.getOutputStream();
while ((bytesRead = in.read(bytes)) != -1) {
out2.write(bytes, 0, bytesRead);
}
in.close();
%>
</cs:ftcs>
我已经尝试了一种解决方法:重定向到 blob 服务器,但问题是我无法直接使用 url 作为图像 重定向不起作用.
有人试过吗?
通过 Oracle 社区找到解决方案:我必须使用控制器。
示例站点应用程序中已给出示例
http://<>:<>/sites/samples/blob_link_builder
编辑:从那时起我使用了不同的解决方案,我使用 vanity URL 作为 blob。我没有做模板,而是使用 AssetType,创建一个将应用于我的资产的 blob 属性的虚荣心 URL。这比使用任何模板来显示图像或类似内容要容易得多。