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

SSRS中文件名含#的PDF链接无法在新窗口正常打开的求助

SSRS报表含#的附件链接失效问题解决

问题背景

开发基于MSSQL的SSRS报表,功能为用户输入订单号后,展示MRP系统中该订单关联的所有附件。当前遇到的问题:

  • 附件文件名包含#(如PO# 12345.PDF)时,链接无法正常打开
  • 文件名不含#时,链接功能正常

当前使用的代码

SSRS动作链接代码

="javascript:void( window.open('" & Fields!LINK.Value & "', 'blank','scrollbars=yes, toolbar=no, width=780, height=1040'))"

SQL查询代码

SELECT          PURCHASE_ORDER.ID, 
        DOCUMENT_REFERENCE.DOCUMENT_ID, 
        [DOCUMENT].DOC_FILE_PATH, 
        DOCUMENT_REFERENCE.CREATE_DATE, 
        REPLACE(REPLACE(CONCAT([DOCUMENT].DOC_FILE_PATH, '/', DOCUMENT_REFERENCE.DOCUMENT_ID), 'V:\', 'http://mac-file01.mac.local/vis/'), '#', '%23') AS LINK, 
        [DOCUMENT].DESCRIPTION, 
        VENDOR.NAME, 
        DOCUMENT_REFERENCE.SOURCE_TYPE
FROM            PURCHASE_ORDER INNER JOIN
                         DOCUMENT_REFERENCE ON PURCHASE_ORDER.ID = DOCUMENT_REFERENCE.ID INNER JOIN
                         [DOCUMENT] ON DOCUMENT_REFERENCE.DOCUMENT_ID = [DOCUMENT].ID INNER JOIN
                         VENDOR ON PURCHASE_ORDER.VENDOR_ID = VENDOR.ID
WHERE PURCHASE_ORDER.ID = @JobNum AND PURCHASE_ORDER.ID = DOCUMENT_REFERENCE.ID AND
DOCUMENT_REFERENCE.SOURCE_TYPE = 'R'

已尝试的无效操作

在SQL脚本中将#替换为%23,报表中鼠标悬停时链接显示为%23,但点击后链接自动变回#,问题未解决。

解决方案

方案1:双重编码URL中的#字符

SSRS会自动对URL进行一次解码,因此需要在SQL中对#进行双重编码(将#替换为%2523,因为%23的URL编码是%2523)。修改SQL中的LINK字段生成逻辑:

REPLACE(REPLACE(CONCAT([DOCUMENT].DOC_FILE_PATH, '/', DOCUMENT_REFERENCE.DOCUMENT_ID), 'V:\', 'http://mac-file01.mac.local/vis/'), '#', '%2523') AS LINK

这样生成的链接中,#会被替换为%2523,SSRS解码后变为%23,浏览器打开时能正确识别为#的URL编码,避免链接失效。

方案2:在JavaScript中对链接进行URL编码

修改SSRS的动作链接代码,使用encodeURI函数对链接进行编码,确保特殊字符被正确处理:

="javascript:void( window.open(encodeURI('" & Fields!LINK.Value & "'), '_blank','scrollbars=yes, toolbar=no, width=780, height=1040'))"

注意将原代码中的'blank'改为'_blank'(符合标准窗口命名规范),同时通过encodeURI对整个链接进行编码,覆盖所有URL特殊字符的处理,不止是#。

验证方法

修改后预览报表,鼠标悬停查看链接是否显示为正确的编码格式(如%23),点击链接测试是否能正常打开附件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:27:22