egg-multipart 为什么要阻止无扩展名的文件?

Created on 19 Apr 2017  ·  5Comments  ·  Source: eggjs/egg

  • Node Version:v6.9.1
  • Egg Version:1.1.0
  • Plugin Name:egg-multipart
  • Plugin Version:1.2.0
  • Platform:debian 8.5 x64

源码链接:
https://github.com/eggjs/egg-multipart/blob/92045980e4e78303a3168324cc3f2f833242809c/app.js

const extname = path.extname(filename);
if (!extname || whitelist.indexOf(extname.toLowerCase()) === -1) {
  const err = new Error('Invalid filename extension: ' + extname);
  err.status = 400;
  return err;
}

当文件名无扩展名时,例如 /etc/hosts,path.extname('/etc/hosts') 得到 ''
!'' === true
因此当我要上传无扩展名的文件时,一定会得到400的http响应
而且这似乎是不可配置的,请问一下,为什么要强制阻止无扩展名的文件?

PR is welcome egg-multipart

Most helpful comment

@liyuanqiu 没解决之前不要自己 close 掉。

那个 PR 已经合并发布了,你删除全部依赖重新安装下即可。具体使用看文档。

就你这个案例,可以配 config.multipart = { fileExtensions: [''] }

All 5 comments

这个理论上是要做成可配置的, @liyuanqiu 可以提一个 PR 支持一下,例如增加支持设置扩展名为空字符串 ''

 const extname = path.extname(filename) || '';
 if (whitelist.indexOf(extname.toLowerCase()) === -1) {

或者支持函数好了

谢谢,大概何时能发布这个feat?

@liyuanqiu 没解决之前不要自己 close 掉。

那个 PR 已经合并发布了,你删除全部依赖重新安装下即可。具体使用看文档。

就你这个案例,可以配 config.multipart = { fileExtensions: [''] }

Was this page helpful?
0 / 5 - 0 ratings