Visualforce, платформа, предоставляемая Salesforce, позволяет разработчикам создавать собственные пользовательские интерфейсы в своих приложениях Salesforce. Одним из общих требований является предоставление пользователям возможности загружать вложения через страницы Visualforce. В этой статье блога мы рассмотрим различные методы достижения этой функциональности, сопровождаемые примерами кода.
Метод 1: стандартный ввод файла HTML
Самый простой подход — использовать элемент HTML <input type="file">. Вот пример:
<apex:page>
<input type="file" id="fileInput" />
<apex:commandButton value="Upload" action="{!uploadFile}" reRender="fileList" />
<apex:outputPanel id="fileList">
<!-- Display uploaded files here -->
</apex:outputPanel>
</apex:page>
В контроллере вы можете обрабатывать загрузку файлов, используя тип данных Blob:
public class MyController {
public Blob fileData { get; set; }
public void uploadFile() {
// Process fileData here
}
}
Метод 2. Использование <apex:inputFile>
Visualforce предоставляет специальный компонент <apex:inputFile>, который упрощает загрузку файлов. Вот пример:
<apex:page>
<apex:form enctype="multipart/form-data">
<apex:inputFile value="{!fileData}" />
<apex:commandButton value="Upload" action="{!uploadFile}" reRender="fileList" />
</apex:form>
<apex:outputPanel id="fileList">
<!-- Display uploaded files here -->
</apex:outputPanel>
</apex:page>
В контроллере определите переменную типа Blobдля хранения загруженных данных файла, как показано в методе 1.
Метод 3. Использование JavaScript и удаленных объектов
Если вы предпочитаете более динамичный подход, вы можете использовать JavaScript и удаленные объекты Salesforce для обработки загрузки файлов. Вот пример:
<apex:page>
<input type="file" id="fileInput" />
<button onclick="uploadFile()">Upload</button>
<apex:outputPanel id="fileList">
<!-- Display uploaded files here -->
</apex:outputPanel>
<script>
function uploadFile() {
var fileInput = document.getElementById('fileInput');
var file = fileInput.files[0];
var reader = new FileReader();
reader.onload = function (e) {
var fileData = e.target.result;
var attachment = new SObjectModel.Attachment();
attachment.Name = file.name;
attachment.Body = fileData;
attachment.create(function (response) {
// Handle response
});
};
reader.readAsDataURL(file);
}
</script>
</apex:page>
В этом методе мы используем FileReaderJavaScript для чтения файла как URL-адреса данных, а затем создаем новую запись Attachmentс помощью удаленных объектов Salesforce.
В этой статье блога мы рассмотрели три различных метода реализации загрузки файлов на страницах Visualforce. Первый метод использует стандартный HTML, второй использует компонент <apex:inputFile>, а третий использует JavaScript и удаленные объекты. В зависимости от ваших требований и предпочтений вы можете выбрать наиболее подходящий подход для вашего приложения Salesforce.