尝试将图像上传到VIA Contentful Content Management API JAVA

时间:2017-04-09 12:05:12

标签: java rest base64 contentful contentful-management

我尝试通过内容管理API上传图片。我想要实现的目标是:将图像上传到预定义的图像内容模型,然后通过Content Delivery API获取网址 - 基本上我希望将Contentful用作我自己的图像服务器存储。

有没有办法将图像作为base64字符串/字节数组发送? CMA期望的媒体对象类型对我来说不是很清楚,我尝试将图像作为字节数组发送,但它抱怨"链接必须是对象而不是数组" 。以下是我到目前为止的情况:

public static void createImageEntity(byte [] imageAsBase64,String name){

    // 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 个答案:

答案 0 :(得分:2)

您不能像在此处一样直接将字段设置为字节数组。首先需要将二进制文件上传到Contentful,然后将其包装在Asset中,然后从输入字段引用该资产。

在Java中,您基本上创建了这样的上传:

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

请注意,上传这样的二进制文件仍然是一项相当新的功能,并且会被视为测试版。您可以在此博文中了解更多相关信息:https://www.contentful.com/blog/2017/03/02/uploading-files-directly-to-contentful/