我为一个帐户上传了 jpeg 图片。jpeg 图像文件 id 为 069i0000001dkl8,无法通过 https://c.na15.content.force.com/servlet/servlet.FileDownload?file=069i0000001dkl8访问
有没有一种方法可以让我在 Salesforce 中获取附件的可下载 URL(使用 api 调用)?或者有没有一种方法可以通过处理 API 对象(SObject)中的某些字段来构建可下载的 URL?
谢谢。
我为一个帐户上传了 jpeg 图片。jpeg 图像文件 id 为 069i0000001dkl8,无法通过 https://c.na15.content.force.com/servlet/servlet.FileDownload?file=069i0000001dkl8访问
有没有一种方法可以让我在 Salesforce 中获取附件的可下载 URL(使用 api 调用)?或者有没有一种方法可以通过处理 API 对象(SObject)中的某些字段来构建可下载的 URL?
谢谢。
在冬天,15 Salesforce 使这成为可能。您可以创建一个将附件转换为ContentVersion和ContentDistribution的类。然后将 ContentDistribution 的 DistributionPublicUrl 字段传递给用户。
代码将是这样的
list<Attachment> invoices = [select id, name, body from attachment limit 10];
list<ContentVersion> contents = new list<ContentVersion>();
list<ContentDistribution> dists = new list<ContentDistribution>();
for(Attachment inv: invoices){
ContentVersion cont = new ContentVersion();
cont.Title = inv.Name;
cont.PathOnClient = inv.Name;
cont.VersionData = inv.Body;
contents.add(cont);
}
insert contents;
for(ContentVersion cont : contents){
ContentDistribution cd = new ContentDistribution();
cd.name = cont.Title;
cd.ContentVersionId = cont.id;
cd.PreferencesAllowOriginalDownload = true;
cd.PreferencesAllowPDFDownload = true;
cd.PreferencesAllowViewInBrowser = true;
dists.add(cd);
}
insert dists ;
从技术上讲,您正在处理ContentDocument(069键前缀)和ContentVersion(068键前缀)记录,而不是Attachment(00P键前缀)。
查看内容对象的数据模型:
您可以使用 SOQL 创建一个查询,该查询将为您提供 ContentDocument 的正确 ContentVersion。然后可以使用生成的 ID 来创建下载 URL。
或者,您可以直接通过 API 从 ContentVersion 获取附件的二进制内容。
顺便说一句,Salesforce Stackexchange网站是询问 Salesforce 特定问题的好地方。