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插件的控制器:
- 在项目
src/extensions/upload/目录下创建strapi-server.js文件(目录不存在则新建) - 写入以下代码覆盖上传逻辑:
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
相关产品推荐
相关产品推荐

