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

Strapi v4.5.6:如何通过API将文件上传至媒体库根目录(Cloudinary)

解决Strapi 4.5.6 + Cloudinary上传文件到根目录的问题

默认情况下,Strapi通过REST/GraphQL API上传的文件确实会自动存入API Uploads文件夹,但可以通过以下两种方式实现根目录上传:

方法1:修改Cloudinary存储配置

直接在Strapi的插件配置中指定Cloudinary的存储文件夹为空,覆盖默认的API Uploads前缀:

  1. 打开或创建项目根目录下的config/plugins.js文件
  2. 在upload配置中添加folder: ""到providerOptions:
module.exports = ({ env }) => ({
  upload: {
    config: {
      provider: "cloudinary",
      providerOptions: {
        cloud_name: env("CLOUDINARY_NAME"),
        api_key: env("CLOUDINARY_KEY"),
        api_secret: env("CLOUDINARY_SECRET"),
        folder: "", // 清空文件夹配置,文件将直接存到Cloudinary根目录
      },
      actionOptions: {
        upload: {},
        delete: {},
      },
    },
  },
  // 其他插件配置...
});
  1. 重启Strapi服务,之后API上传的文件就会直接存入Cloudinary根目录。

方法2:自定义上传服务覆盖逻辑

如果上述配置不生效,可以通过自定义Strapi的上传服务,手动修改文件存储路径:

  1. 在src/api/upload/services/目录下创建或修改upload.js文件
  2. 覆盖默认的upload方法,强制清空文件的存储文件夹:
const { createCoreService } = require("@strapi/strapi").factories;

module.exports = createCoreService("api::upload.upload", ({ strapi }) => ({
  async upload(files, { user, ...rest }) {
    // 遍历所有上传文件,清空存储文件夹配置
    files.forEach(file => {
      file.providerOptions = { 
        ...file.providerOptions, 
        folder: "" 
      };
    });
    // 调用父类的上传方法完成操作
    return await super.upload(files, { user, ...rest });
  },
}));
  1. 重启Strapi服务,测试API上传即可。

注意事项

  • 管理员后台上传的文件默认会存到根目录,上述方法主要针对API上传的场景
  • 确认你的Cloudinary插件版本与Strapi 4.5.6兼容,避免配置失效
  • 修改配置后,建议上传测试文件到Cloudinary后台验证存储路径是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:11:12