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

Strapi本地媒体URL返回404,Cloudinary URL正常,求排查方案

Strapi媒体仅Cloudinary可访问、本地URL返回404的原因及排查步骤

核心原因

你配置了Cloudinary作为Strapi的远程媒体存储服务,上传的文件会直接同步到Cloudinary服务器,Strapi本地的uploads目录不会保存这份文件,所以用本地172.20.0.20:1337/uploads/xxx访问自然会返回404。Strapi的本地存储和Cloudinary是互斥配置,启用Cloudinary后,媒体文件的读写逻辑完全转向远程服务,本地不再留存副本。

故障排查及解决步骤

  • 检查媒体存储配置
    打开Strapi项目根目录下的config/plugins.js(或config/plugins.ts),确认是否存在Cloudinary的配置代码:

    module.exports = ({ env }) => ({
      upload: {
        config: {
          provider: 'cloudinary',
          providerOptions: {
            cloud_name: env('CLOUDINARY_NAME'),
            api_key: env('CLOUDINARY_KEY'),
            api_secret: env('CLOUDINARY_SECRET'),
          },
          actionOptions: {
            upload: {},
            delete: {},
          },
        },
      },
    });
    

    若存在这段代码,说明当前确实使用Cloudinary远程存储,本地无文件副本。

  • 验证本地uploads目录
    登录Strapi服务器,查看项目根目录下的public/uploads文件夹,确认是否存在你上传的neon_paint_takeover_4k_2_72acd90a9c.png文件。如果没有,即可确认文件仅存储在Cloudinary。

  • 切换回本地存储(若需局域网访问)
    如果必须通过本地URL访问资源,修改config/plugins.js恢复默认本地存储配置:

    module.exports = ({ env }) => ({
      upload: {
        config: {
          provider: 'local',
          providerOptions: {
            sizeLimit: 1000000, // 可根据需求调整文件大小限制
          },
        },
      },
    });
    

    保存配置后重启Strapi服务,重新上传图片,此时文件会保存到本地public/uploads目录,即可通过172.20.0.20:1337/uploads/xxx访问。

  • 检查静态文件服务中间件
    切换回本地存储后,确认config/middlewares.js中是否启用了strapi::public中间件(负责提供public目录下的静态文件访问):

    module.exports = [
      'strapi::errors',
      'strapi::security',
      'strapi::cors',
      'strapi::poweredBy',
      'strapi::logger',
      'strapi::query',
      'strapi::body',
      'strapi::session',
      'strapi::favicon',
      'strapi::public', // 确保该中间件存在
    ];
    

    若缺失,添加后重启服务即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:46:21