1

我正在使用 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" >

这是可以实现的吗?任何人都可以给我任何提示吗?

谢谢安杰洛

4

1 回答 1

1

我想我知道了……但在我看来真的很可惜……无论如何……我看到 REST API 总是通过使用这种 URL 来提供数据流内容:

http://host:port/fedoraWebContext/objects/PID/datastreams/dataStreamName/content

在哪里

  • host:fedora Web 应用程序所在的主机名(或 IP)
  • port : fedora web 应用程序正在监听的端口号
  • fedoraWebContext:fedora web 应用程序上下文(默认是 fedora)
  • 对象:这是一个固定值
  • PID : 对象 PID
  • 数据流:这是一个固定值
  • dataStreamName : 我们要显示内容的数据流的名称
  • 内容:这是一个固定值

现在我想知道这是否是正确的方法;关于这个的任何提示?

谢谢

安杰洛

于 2014-04-08T12:34:37.937 回答