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

Strapi v4.10.5 Upload API如何限制上传文件类型?

限制Strapi v4.10.5 Upload API允许上传的文件类型

当然可以,Strapi v4提供了两种主要方式来限制Upload API的文件类型:

1. 通过配置文件快速设置

在项目根目录下的config/plugins.js文件(如果不存在则新建)中,针对upload插件配置allowedTypes:

module.exports = ({ env }) => ({
  upload: {
    config: {
      // 方式一:使用预设的类型分组
      allowedTypes: ['images', 'videos', 'documents'],
      // 方式二:指定具体的MIME类型(更精确)
      // allowedTypes: ['image/jpeg', 'image/png', 'application/pdf', 'video/mp4'],
    },
  },
});

预设分组对应的MIME类型由Strapi默认定义,比如images包含常见的图片格式(jpg、png、gif等),documents包含pdf、doc等文档格式。

2. 自定义控制器实现更复杂的验证规则

如果需要更灵活的验证逻辑(比如结合文件大小、特定业务规则),可以扩展Upload插件的控制器:

  1. 在项目src/extensions/upload/目录下创建strapi-server.js文件(目录不存在则新建)
  2. 写入以下代码覆盖上传逻辑:
module.exports = (plugin) => {
  // 保存原上传方法
  const originalCreate = plugin.controllers.upload.create;
  plugin.controllers.upload.create = async (ctx) => {
    const files = ctx.request.files;
    // 定义允许的MIME类型列表
    const allowedMimeTypes = ['image/jpeg', 'image/png', 'application/pdf'];

    // 遍历所有上传文件检查类型
    for (const file of Object.values(files)) {
      if (!allowedMimeTypes.includes(file.type)) {
        return ctx.badRequest(`文件类型 ${file.type} 不被允许,仅支持:${allowedMimeTypes.join(', ')}`);
      }
    }

    // 验证通过后执行原上传逻辑
    return await originalCreate(ctx);
  };

  return plugin;
};

修改配置或扩展代码后,重启Strapi服务即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:22:43