Webcenter Sites 12.2.1 を使用していますが、バニティ URL を使用したメディアのテンプレートについて質問があります。私のユーザーは、PDF、画像、またはそのようなブロブなどの一部のメディアのバニティ URL を持ちたいと考えています。javascript や css などのテキスト ベースの属性については実行できますが、blob ベースの属性については少し行き詰まっています。ポイントは、アセットのバニティ URL を作成するには、テンプレートを使用する必要があるということです。テンプレートでテキストを表示する必要がある場合、問題はありません。ブロブの場合、属性を取得できますが、ブロブ サーバー 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>
私はすでに回避策を試しました:ブロブサーバーにリダイレクトしますが、問題は、リダイレクトを使用した画像 < img src="/prettyUrl" > が機能しないため、URLを直接使用できないことです。
誰かがそうしようとしましたか?