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

Gatsbyjs对接Directus时如何获取content字段内的图片资源?

解决方案

前置校验

首先确认Directus侧配置:

  • 给content字段内嵌图片对应的资产角色开放「查看」权限,若不使用公开访问,需提前准备好有权限的API Token
  • 确认content字段内的图片src格式:Directus默认输出相对路径,需提前拼接你的Directus实例根地址拼成完整可访问路径

方案1:直接解析渲染(无需本地处理图片)

适合不需要Gatsby做图片优化的场景:

  1. 安装HTML解析工具html-react-parser
npm install html-react-parser
  1. 在组件中获取到content字段后,遍历替换所有img标签的src为完整可访问地址,示例代码:
import parse from 'html-react-parser';

const PostContent = ({ content, directusUrl }) => {
  const parsedContent = parse(content, {
    replace: (domNode) => {
      if (domNode.name === 'img') {
        const originalSrc = domNode.attribs.src;
        // 拼接完整路径,若需鉴权可加?access_token=你的token
        domNode.attribs.src = `${directusUrl}${originalSrc}`;
      }
    }
  });
  return <div className="post-content">{parsedContent}</div>;
};

方案2:搭配Gatsby图片优化(推荐)

适合需要用到Gatsby的响应式图片、格式转换、压缩等能力的场景:

  1. 先在gatsby-config.js中配置gatsby-source-directus插件时开启downloadAssets: true,构建时会自动拉取所有Directus资产到Gatsby本地节点
  2. 在页面的GraphQL查询中,同时查询content字段和所有Directus资产的id、filename_download、gatsbyImageData
  3. 解析content字段的img标签,通过src匹配对应资产的filename_download,将原生img标签替换为Gatsby的GatsbyImage组件即可。

注意事项

  • 若使用带Token的鉴权访问图片,不要将高权限Token暴露到客户端,尽量在构建阶段完成图片下载和替换逻辑
  • 若content内的图片是第三方外链,无需额外处理,直接解析渲染即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:12:02