Salesforce 将文件(图像/音频/视频)分块上传到FeedItem

Salesforce 将文件(图像/音频/视频)分块上传到FeedItem,salesforce,apex,Salesforce,Apex,我试图将文件(图像/音频/视频)分块上传到FeedItem,上面的示例显示了我在写入文档时如何执行相同的操作。但如果尝试对FeedItem执行相同操作,它会显示“FeedItem.ContentData不可写”,因此我尝试了以下代码: ​public static String upload(String folderId, String documentId, String fileName, String base64BlobValue) { if(documentId ==

我试图将文件(图像/音频/视频)分块上传到FeedItem,上面的示例显示了我在写入文档时如何执行相同的操作。但如果尝试对FeedItem执行相同操作,它会显示“FeedItem.ContentData不可写”,因此我尝试了以下代码:

​public static String upload(String folderId, String documentId, String fileName, String base64BlobValue) {
        if(documentId == '' || documentId == null) {
            Document document = new Document(Name=fileName, FolderId=folderId, Body=EncodingUtil.Base64Decode(base64BlobValue), IsPublic=true);
            insert document;

            return document.Id;

        } else {

            Document document = [select Id, Body from Document where Id = :documentId];
            update new Document(Id = documentId, Body = EncodingUtil.Base64Decode(EncodingUtil.Base64Encode(document.Body) + base64BlobValue));

            return documentId;
        }
    }
但这会创建不完整块的内容版本。关于如何才能更简洁地实现这一点的任何建议


谢谢

您可以尝试将IsMajorVersion设置为false

FeedItem imageFeedItem = [select Id, ContentData, RelatedRecordId from FeedItem where Id = :imageFeedItemId];

ContentVersion content = new ContentVersion();
content.versionData = EncodingUtil.Base64Decode(EncodingUtil.Base64Encode(imageFeedItem.ContentData) + base64BlobValue);
content.pathOnClient = fileName;

content.ContentDocumentId = [Select ContentDocumentId from ContentVersion where id=:imageFeedItem.RelatedRecordId].ContentDocumentId;

insert content;

我希望这有帮助

谢谢,我会尽力让你知道的。
ContentVersion content = new ContentVersion();
content.versionData = EncodingUtil.Base64Decode(EncodingUtil.Base64Encode(imageFeedItem.ContentData) + base64BlobValue);
content.pathOnClient = fileName;
content.IsMajorVersion = false;

content.ContentDocumentId = [Select ContentDocumentId from ContentVersion where id=:imageFeedItem.RelatedRecordId].ContentDocumentId;

insert content;