You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blob存储文件重命名咨询:无法修改系统方法时的实现方案

实现Blob下载时自定义文件名(不修改原Blob名称)

可行,核心思路是先将Blob内容读取到内存流,再通过File.Download方法指定自定义文件名完成下载,原Blob的标识符(Rec.BlobName)完全保留,不会被修改。

具体实现代码

替换原Download动作的OnAction触发器代码,改为以下逻辑:

area(Processing)
{
    action(Download)
    {
        ApplicationArea = All;
        Caption = 'Download';
        Image = Download;

        trigger OnAction();
        var
            BlobStream: InStream;
            TargetFileName: Text;
        begin
            // 1. 从数据库获取要使用的自定义文件名(替换成你实际的字段名,比如Rec.DocumentName)
            TargetFileName := Rec.DocumentName;
            if TargetFileName = '' then
                Error('未指定下载文件名');

            // 2. 通过ABSBlobClient获取Blob的内容流
            ABSBlobClient.GetBlobAsStream(Rec.BlobName, BlobStream);
            if BlobStream.EOS then
                Error('Blob内容为空');

            // 3. 使用File.Download方法,指定自定义文件名完成下载
            File.Download(BlobStream, '', '', '', TargetFileName);
        end;
    }
}

关键逻辑说明

  • GetBlobAsStream:属于ABSBlobClient的系统方法,和GetBlobAsFile功能同源,只是将Blob内容读取到流对象而非直接触发下载
  • File.Download:Business Central标准方法,支持传入流和自定义文件名,用户下载时会收到指定名称的文件
  • 原Blob的Rec.BlobName仅用于定位Blob资源,全程不会被修改,完全满足「Blob保留标识符、下载文件用数据库名称」的需求

内容的提问来源于stack exchange,提问作者Maksio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:42:06