Salesforce Files — Download Customization

DEX455 - Metadata、Platform Cache、Knowledge 与 Files 完全指南

📄 第 312 页 🎬 视频课程

课程章节介绍

同学们,咱们今天来看Salesforce里一个非常实用的功能,就是怎么通过代码自定义文件的下载行为。 简单说,Salesforce提供了一个接口,叫`ContentDownloadHandlerFactory`,我们可以自己写一个类来实现它。这个工厂里有个方法可以返回一个处理程序,它能决定两件事: 第一,`isDownloadAllowed`,也就是允不允许直接下载; 第二,`redirectUrl`,一个重定向地址。 那它是怎么工作的呢? 当用户点击下载某个文件时,Salesforce并不会立刻把文件给出去,而是先去查有没有我们定义的工厂实现。 系统会调用咱们工厂里的`getContentDownloadHandlerFactory`方法,拿到一个处理实例,然后看它的`isDownloadAllowed`。如果这个值是`false`,下载就会被拦截,同时把用户引导到`redirectUrl`指定的页面去。 如果有多个自己写的工厂,它们会按照名称顺序一个接一个地问,直到有工厂接手处理这个下载请求,这就是所谓的级联处理。 这样设计的用处可多了。 比如,可以按用户的简档或者访问设备来禁止下载。 再比如,做收件箱场景的控制,或者在下载前先送到外部做防病毒扫描。 还有像打包下载多个文件、生成内容包再提供下载点,都可以靠这套机制灵活实现。 咱们举个收件箱集成的实际例子: 用户想下载文件,我们的工厂检测到这个请求,把`isDownloadAllowed`设成`false`,再把`redirectUrl`指到一个外部系统地址。 用户被转到那个外部系统,系统会先处理文件——比如杀毒、转格式——处理完后,生成一个真正的下载端点,用户最后才从这个端点拿到文件。整个过程对用户来说可能只是一瞬间,但背后就是靠这个下载工厂在控制流程。 这样一来,大家就完全可以把Salesforce的文件下载行为跟自己的业务场景深度整合起来,既安全又灵活。 好了,这一页的核心就是这些,有什么问题咱们随时讨论。

关键词

Apex Salesforce Developer Guide