📅  最后修改于: 2023-12-03 14:53:55.567000             🧑  作者: Mango
在 Visualforce 页面中,我们可以通过文件上传组件 apex:inputFile
来让用户上传附件,并将附件保存到 Salesforce 服务器或第三方服务器中。下面是实现这个功能的代码示例:
<apex:page controller="FileUploadController">
<apex:form enctype="multipart/form-data">
<apex:inputFile value="{!file}" fileName="{!fileName}" />
<apex:commandButton action="{!uploadFile}" value="上传文件" />
</apex:form>
</apex:page>
其中,apex:inputFile
组件定义了一个文件上传框,并将用户选择的文件绑定到 file
变量中,fileName
变量用于存储文件名。enctype="multipart/form-data"
属性指定了表单数据采用了二进制编码方式,以便支持文件上传。
apex:commandButton
组件用于提交表单,通过调用 uploadFile
方法将文件上传到服务器。下面是 FileUploadController
控制器中的具体实现:
public class FileUploadController {
public Blob file {get; set;}
public String fileName {get; set;}
public PageReference uploadFile() {
// 将文件保存到 Salesforce 服务器
ContentVersion contentVersion = new ContentVersion();
contentVersion.ContentLocation = 'S';
contentVersion.VersionData = file;
contentVersion.Title = fileName;
insert contentVersion;
// 显示成功消息
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.INFO, '文件上传成功!'));
// 返回上一页
return new PageReference('/' + ApexPages.currentPage().getParameters().get('retURL'));
}
}
FileUploadController
控制器定义了两个变量 file
和 fileName
,用于存储用户上传的文件和文件名。uploadFile
方法将文件保存到 Salesforce 服务器,并显示一个成功消息。最后,通过 PageReference
类返回上一页。
以上是一个简单的将附件上传到 VF 页面的示例,具体实现方式可能因业务需求而略有不同。