Регистрация  |  Вход

Загружаем и присоединяем к объектам файлы. Attachments

Привет. Сегодня я расскажу, как в 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>

В данном примере запись задается харкодно в коде строкой "a00d000000AWM1z". Вы можете взять для эксперимента любой объект на вашем орге, взять Id любой записи и подставить в пример.

Чтобы проверить результаты работы, необходимо перейти на страницу View для выбранной вами записи и посмотреть появился ли файл с указанным названием в секции "Notes & Attachments".

Примечание: секция "Notes & Attachments" по умолчанию выключена (если вы ее не включили при создании объекта). Чтобы включить данную секцию, необходимо перейти на страницу редактирования layout для объекта (Setup->Create->Objects->your_object->Page Layouts->Edit) и добавить секцию

salesforce-create-attachements-1

В одной из следующих статей я применю этот метод чтобы добавить к объектам Book в нашем приложении возможность подгружать обложки.