Эта статья морально устарела :( . Приглашаю продолжить ваше знакомство с Salesforce на нашем Форуме!
Привет. Сегодня я расскажу, как в Salesforce работать с таким нужным функционалом как Attachemtns. Salesforce любезно предоставляет нам такую возможность как загружать на орг файлы и присоединять их к конкретным записям. Вообще для загрузки файлов на орг существует еще ряд других возможностей (Static resourses, Documents, CRM Content), но мы пока поговорим именно о программной загрузке, используя созданные нами страницы.
Для загрузки файлов, указанного выше типа, в Salesforce предусмотрен объект с названием Attachment. Это стандартный salesforce объекта, который уже любезно создан и ждет того, чтобы мы им воспользовались.
На файл, который мы можем прикрепить к записи Salesforce, накладывает лимит в 5 Мб. Если есть необходимость загрузить файл большего размера, то придется искать обходные пути (использовать другие места хранения данных - Documents, CRM Content).
Вот простейший пример тестовой страницы, которая позволит загрузить на орг и прикрепить к заданной записи файл
контроллер
public with sharing class UploadAttachementTestController {
public Attachment attachment {
get {
if (attachment == null)
attachment = new Attachment();
return attachment;
}
set;
}
public PageReference upload() {
attachment.OwnerId = UserInfo.getUserId();
attachment.ParentId = 'a00d000000AWM1z'; // the record the file is attached to
attachment.IsPrivate = false;
try {
insert attachment;
} catch (DMLException e) {
ApexPages.addMessage(new ApexPages.message(ApexPages.severity.ERROR,'Error uploading attachment'));
return null;
} finally {
attachment = new Attachment();
}
ApexPages.addMessage(new ApexPages.message(ApexPages.severity.INFO,'Attachment uploaded successfully'));
return null;
}
}
<apex:page controller="UploadAttachementTestController">
<apex:form enctype="multipart/form-data">
<apex:pageMessages />
<apex:outputLabel value="File Name" for="fileName"/>
<apex:inputText value="{!attachment.name}" id="fileName"/><br />
<apex:outputLabel value="File" for="file"/>
<apex:inputFile value="{!attachment.body}" filename="{!attachment.name}" id="file"/><br />
<apex:outputLabel value="Description" for="description"/><br />
<apex:inputTextarea value="{!attachment.description}" id="description"/><br />
<apex:commandButton action="{!upload}" value="Save"/>
</apex:form>
</apex:page>