有什么方法可以通过使用Salesforce APEX将图像保存到Salesforce

2020年6月3日 18点热度 0条评论

我们正在将WSO2 ESB与Salesforce集成在一起。我们需要将图像插入Salesforce Object(Lead)。图像下载在某个目录中。我想知道有效的想法来完成此任务。我有一些想法,例如

将图像转换为Base64编码,然后将请求发送到Salesforce APEX。
将图像作为BLOB插入数据库,然后从数据库中获取该BLOB,存储到字节数组中,最后将其推入Salesforce。
但是我不知道最好,最有效的方法。如果您有任何想法/可能性,请与我分享。
注意:要编写与Salesforce相关的任务,请在此处单独的SF Team。我在这里需要的是实现这项任务的方式/可能性。 Java类也是可能的。
等待您的回应!!!

解决方案如下:

您可以将其保存为内容版本,现在不推荐使用附件。

public with sharing class ContentVersionUtil {
public ContentVersionUtil() {
}
public static Id createDocument(Id parentId, String fileName, String data, Id contentDocumentId) {

    ContentVersion versionData = new ContentVersion();
    versionData.ContentLocation = 'S';
    versionData.ContentDocumentId = contentDocumentId;
    versionData.VersionData = Blob.valueOf(data);
    versionData.Title = fileName;
    versionData.PathOnClient = filename;
    insert versionData;

    ContentDocumentLink conDocLink = new ContentDocumentLink();
    conDocLink.ContentDocumentId = [SELECT Id, ContentDocumentId FROM ContentVersion WHERE Id = :versionData.Id].ContentDocumentId;
    conDocLink.LinkedEntityId = parentId;
    conDocLink.ShareType = 'V';
    insert conDocLink;


    return conDocLink.Id;
}

public static Id createDocument(Id parentId, String fileName, String data) {
    return createDocument(parentId, fileName, data, NULL);
}
public static Id createDocumentafterformat(Id parentId, String fileName, String data) {
    return createDocument(parentId, fileName, data, NULL);
}
}

测试类别:

@isTest
public with sharing class ContentVersionUtilTest {

@TestSetup
static void makeData(){
    Account acc = new Account (Name = 'Test Account');
    insert acc;
    Contact cont = new Contact (LastName = 'Raj', AccountId = acc.Id);
    insert cont;
}
@isTest
static void test_content_version_creation_0 () {
    Contact eachContact = [SELECT Id from Contact LIMIT 1];

    ContentVersionUtil util = new ContentVersionUtil ();
    Id conDocLinkId = ContentVersionUtil.createDocument(eachContact.Id, 'testFile', 'csv', 'Some important Data');
    System.assertEquals(eachContact.Id, [SELECT Id, LinkedEntityId from ContentDocumentLink WHERE Id =: conDocLinkId].LinkedEntityId);
}
}