我正在使用fedora commons 3.7.1和REST客户端com.yourmediashelf.fedora.client版本0.7
我能够在FCRepo中上传文件和媒体;我能够创建自己的数据流 现在我喜欢展示内容;到目前为止,我找到的唯一方法是这段代码:
@Test
public void testSearch()
{
try
{
FedoraCredentials fc = new FedoraCredentials("http://localhost:8080/fedora", "fedoraAdmin", "fedoraAdmin");
FedoraClient fcRepoClient = new FedoraClient(fc);
FedoraRequest.setDefaultClient(fcRepoClient);
FindObjects fo = new FindObjects();
fo.maxResults(3).pid().query("pid~chang*44");
FindObjectsResponse fors = fo.execute();
List<String> pids = fors.getPids();
for (String pid : pids)
{
AddDatastream ads = new AddDatastream(pid, "angeloDs");
ads.content("<test>Angelo</test>");
ads.mimeType("text/xml");
ads.execute();
GetDatastream gd = new GetDatastream(pid, "Immagine.png");
gd.format("xml");
String resp = gd.execute().getEntity(String.class);
logger.info(resp);
GetDatastreams gds = new GetDatastreams(pid);
GetDatastreamsResponse gdr = gds.execute();
List<DatastreamProfile> dps = gdr.getDatastreamProfiles();
for (DatastreamProfile datastreamProfile : dps)
{
if(!datastreamProfile.getDsID().trim().equals("DC"))
{
GetDatastreamDissemination gdd = new GetDatastreamDissemination(pid, datastreamProfile.getDsID());
gdd.download(true);
FedoraResponse fr = gdd.execute();
StringBuilder sb = new StringBuilder();
InputStream is = fr.getEntityInputStream();
int i = -1;
while ((i=is.read()) != -1)
{
sb.append((char)i);
}
logger.info(sb.toString());
}
}
}
}
catch (Exception e)
{
logger.error(e.getMessage(), e);
}
}
所以我做了以下步骤: 通过使用一些查询搜索pids(它没关系......我能理解它) 搜索数据流配置文件 搜索数据流传播
现在,当我有数据流传播时,我可以使用getEntityInputStream并获取媒体的InputStream .... 我现在的目的是获取内容的传播URL ...所以在我的HTML页面中我可以使用这样的东西(假设媒体是图像):
<img src="disseminationUrlValue" >
这可以实现吗?任何人都可以给我任何提示吗?
谢谢 安吉洛
答案 0 :(得分:1)
我想我知道怎么做......但在我看来真的很可惜...... 无论如何......我看到REST API总是使用这种URL提供数据流内容:
http://host:port/fedoraWebContext/objects/PID/datastreams/dataStreamName/content
其中
现在我想知道这是否是正确的做法;关于这个的任何提示?
谢谢
安吉洛