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);
    }
}

だから私はこれらの手順を実行しました:いくつかのクエリを使用してpidを検索します(そしてそれはOKです...私はそれを理解できます)データストリームを検索しますプロファイルデータストリームの配布を検索します

データストリームの配布があると、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)
  • objects : 固定値です
  • PID : オブジェクトの PID
  • datastreams : 固定値です
  • dataStreamName : コンテンツを表示するデータストリームの名前
  • content : 固定値です

今、これが正しい方法かどうか疑問に思っています。これに関するヒントはありますか?

ありがとうございました

アンジェロ

于 2014-04-08T12:34:37.937 に答える