📜  将附件上传到 VF 页面 (1)

📅  最后修改于: 2023-12-03 14:53:55.567000             🧑  作者: Mango

将附件上传到 VF 页面

在 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 控制器定义了两个变量 filefileName,用于存储用户上传的文件和文件名。uploadFile 方法将文件保存到 Salesforce 服务器,并显示一个成功消息。最后,通过 PageReference 类返回上一页。

以上是一个简单的将附件上传到 VF 页面的示例,具体实现方式可能因业务需求而略有不同。