【问题标题】:Trying to upload image to VIA Contentful Content Management API JAVA尝试将图像上传到 VIA Contentful Content Management API JAVA
【发布时间】:2017-04-09 20:49:21
【问题描述】:

我正在尝试通过内容管理 API 上传图片。我想要实现的是:将图像上传到预定义的图像内容模型并稍后通过 Content Delivery API 获取 url - 基本上我希望使用 Contentful 作为我自己的图像服务器存储。

有没有办法将图像作为 base64 字符串/字节数组发送? CMA 期望的媒体对象类型对我来说不是很清楚,我尝试将图像作为字节数组发送,但它抱怨 "Links must be Objects and not Arrays" 。这是我目前所拥有的:

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

【问题讨论】:

    标签: java rest base64 contentful contentful-management


    【解决方案1】:

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

    在 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/

    【讨论】:

    • 我已经读过这方面的内容,但我的 CMAClient 上似乎没有任何 uploads(),即使我有来自 mvnrepository 的最新版本。知道在哪里可以找到吗?
    • 可能是Java SDK 在最新的稳定版本中还不支持它。我知道它来了。另一种选择是将您的二进制文件上传到某个地方,例如 Dropbox,然后使用标准的 uploadUrl 字段将您新创建的资产指向此文件。
    • 我终于用 Dropbox api 做到了我想要的 :) 谢谢你的提示!
    猜你喜欢
    • 2017-11-06
    • 2020-09-03
    • 1970-01-01
    • 2019-12-18
    • 2019-10-16
    • 2021-07-21
    • 1970-01-01
    • 2019-04-17
    相关资源
    最近更新 更多