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