内容丰富的API:上传并将图像分配给条目

时间:2017-03-08 12:13:03

标签: contentful contentful-management

我一直在使用Contentful Management Javascript SDK来更新Contentful空间中的条目,并且能够使用文本更新简单字段没问题。

我的问题是,我无法弄清楚如何在我的条目中更新图像;我可以将图片上传到媒体部分,但我还没有能够任何图片分配到入口属性。

这可能或者这是Contentful的限制吗?

到目前为止,这是我的代码:

client.getSpace(CONTENTFUL_SPACE).then((space) => {
// retrieve my Contentful space

    space.getEntry(CONTENTFUL_ENTRY).then(function (entry) {
    // get a specific entry

        // create a new asset in my Contentful media section
        space.createAssetWithId(RANDOM_ID, {
            fields: {
                file: {
                    'en-GB': { 
                        contentType: 'image/jpeg',
                        fileName: 'test.jpg',
                        upload: 'http://www.example.com/test.jpg'
                    }
                }
            }
        })
        .then(asset => asset.processForAllLocales())
        .then(asset => asset.publish())
        .then(function(asset) {

            // assign uploaded image as an entry field
            // (none of these work:)
            entry.fields["image"]["en-GB"] = asset.sys.id;
            entry.fields["image"]["en-GB"] = asset.fields.file["en-GB"].url;
            entry.fields["image"]["en-GB"] = asset;
        });
    });
});

1 个答案:

答案 0 :(得分:5)

您好我是js SDK的维护者,假设您有一个名为image类型媒体的字段,您可以在这里添加资产。

client.getSpace(CONTENTFUL_SPACE).then((space) => {
// retrieve my Contentful space

space.getEntry(CONTENTFUL_ENTRY).then(function (entry) {
// get a specific entry

    // create a new asset in my Contentful media section
    space.createAssetWithId(RANDOM_ID, {
        fields: {
            file: {
                'en-GB': { 
                    contentType: 'image/jpeg',
                    fileName: 'test.jpg',
                    upload: 'http://www.example.com/test.jpg'
                }
            }
        }
    })
    .then(asset => asset.processForAllLocales())
    .then(asset => asset.publish())
    .then(function(asset) {

        // assign uploaded image as an entry field
        entry.fields["image"]["en-GB"] = {"sys": {"id": asset.sys.id, "linkType": "Asset", "type": "Link"}};
        return entry.update()
    });
});
});