AttachmentDownloader
| 属性 | 值 |
|---|---|
| 接口类型 | extra-core |
| 完整类名 | com.fr.stable.fun.AttachmentDownloader |
背景与场景
FineReport 产品涉及大量文件上传与下载操作。AttachmentDownloader 接口允许开发者自定义附件的下载逻辑。
接口定义
package com.fr.stable.fun;
import com.fr.stable.fun.mark.Selectable;
public interface AttachmentDownloader extends Selectable {
String XML_TAG = "AttachmentDownloader";
int CURRENT_LEVEL = 1;
void download(HttpServletRequest req, HttpServletResponse res,
String id, String[] idArr) throws Exception;
String createDownloadScript(String downloadURL);
}
Selectable 父接口要求实现:
Selector selector();
支持版本
| 产品线 | 版本 | 支持情况 |
|---|---|---|
| FR | 8.0 | 支持 |
| FR | 9.0 | 支持 |
| FR | 10.0 | 支持 |
| FR | 11.0 | 支持 |
插件注册
在 plugin.xml 中添加以下节点:
<extra-core>
<AttachmentDownloader class="your class name"/>
</extra-core>
原理说明
系统通过 ExtraClassManager.getInstance().getArray(AttachmentDownloader.XML_TAG) 获取所有注册实现。请求处理时,选择器(Selector)依次对各实现进行判断,第一个匹配的实现生效;若无匹配,则使用默认处理器。
注意事项
- 请求参数
id用于传递附件标识 - 可注册多个实现,但每次下载请求只有一个实现通过选择器生效
createDownloadScript()方法仅对单元格计算所得的附件生效(不适用于上传后的文件),且该方法中只应使用DefaultAttachmentDownloader,避免冲突