2017-04-09 1 views
0

コンテンツ管理API経由で画像をアップロードしようとしています。私が達成したいのは、あらかじめ定義されたImageコンテンツモデルに画像をアップロードし、後でContent Delivery API経由でURLを取得することです。基本的に私自身の画像サーバストレージとしてContentfulを使用したいと考えています。VIA Contentful Content Management APIに画像をアップロードしようとしていますJAVA

イメージをbase64文字列/バイト配列として送信する方法はありますか? CMAが期待するメディアオブジェクトの種類は私にはあまり明確ではなく、バイト配列としてイメージを送信しようとしましたが、"リンクはオブジェクトであり、配列ではありません"という文句を言います。ここで私はこれまで持っているものです。

公共の静的な無効createImageEntity(バイト[] imageAsBase64、文字列名){

// Create the client with given acces token 
    final CMAClient client = new CMAClient 
        .Builder() 
        .setAccessToken(CDA_TOKEN) 
        .build(); 

    // Create new entry for given client 
    final CMAEntry entry = new CMAEntry() 
        .setId(name + "-id") 
        .setField("title", name, "en-US") 
        .setField("photo", imageAsBase64, "en-US"); 


    final CMAEntry createdEntry = client 
      .entries() 
      .create(SPACE_ID, IMAGE_CONTENT_TYPE_ID, entry); 
} 

答えて

1

あなたがやっているようあなたはバイト配列に直接フィールドを設定することはできませんここに。最初にContentfulにバイナリファイルをアップロードし、それを資産にラップし、その資産を入力フィールドから参照する必要があります。このようなバイナリファイルをアップロードすると、まだかなり新しい機能で、ベータ版では考慮されていることを

final CMAUpload upload = 
client 
    .uploads() 
    .create("<space_id>", 
     // this stream should point to your file to be uploaded. 
     new FileInputStream("your file") 
    ); 

注:基本的に、このようなアップロードを作成するJavaでは

https://www.contentful.com/blog/2017/03/02/uploading-files-directly-to-contentful/

+0

私はmvnrepositoryの最新バージョンを持っていてもCMAClientにアップロード()はありません。私がそれを見つけることができるどんなアイデア? –

+0

Java SDKが最新の安定版でまだサポートしていない可能性があります。私はそれが来ていることを知っている。もう1つの方法は、dropboxのようにバイナリファイルをどこかにアップロードし、標準のuploadUrlフィールドを使用して、新しく作成したアセットをこれに向けることです。 – Robban

+0

私はドロップボックスAPIで欲しかったものを正確に行うためにすべての後を管理しました:)あなたのヒントありがとう! –

関連する問題