Skip to content

在配置了二级路由的情况下,知识库检索出来的图片地址拼接异常 #5574

@TinyPeanut

Description

@TinyPeanut

例行检查

  • 我已确认有类似 issue 问答中的图片无法显示 #5426 ,但未解决
  • 我已完整查看过项目 README,以及项目文档
  • 我使用了自己的 key,并确认我的 key 是可正常使用的
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

你的版本

  • 公有云版本
  • 私有部署版本, 具体版本号: V4.12.0

问题描述, 日志截图,配置文件等
在配置了二级路由的情况下,知识库检索出来的图片地址拼接异常,对话框内无法正常展示图片

复现步骤

  1. 环境配置
FE_DOMAIN=http://localhost:3000
FILE_DOMAIN=http://localhost:3000
NEXT_PUBLIC_BASE_URL=/test
  1. 用带有图片的word文档上传知识库
  2. 配置一个应用让AI去查寻刚刚的导入的知识库内容

预期结果
图片无法正常展示
相关截图
Image

Image Image

尝试修复
经调试,发现是位于packages\service\common\file\image\utils.ts下的addEndpointToImageUrl方法在拼接图片路径时没有考虑二级路由
修改如下就修复了:

// 对文本中的图片路径修改为完整的访问路径
export const addEndpointToImageUrl = (text: string) => {
  const baseURL = process.env.FE_DOMAIN;
  const subRoute = process.env.NEXT_PUBLIC_BASE_URL || '';
  if (!baseURL) return text;
  const regex = new RegExp(
    `(?<!https?:\\/\\/[^\\s]*)(?:${subRoute}\\/api\\/system\\/img\\/[^\\s.]*\\.[^\\s]*)`,
    'g'
  );
  // 匹配 ${subRoute}/api/system/img/xxx.xx 的图片链接,并追加 baseURL
  return text.replace(regex, (match) => {
    // addLog.debug(`--->img match: ${match}`);
    // addLog.debug(`--->img replace: ${baseURL}${match}`);
    return `${baseURL}${match}`;
  });
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions