如何在node.js中查找文件是否为可执行文件

如何在node.js中查找文件是否为可执行文件,node.js,process,Node.js,Process,我正在寻找一种独立于平台(win、mac、linux)的方法来确定文件是否可执行。以下内容对我不起作用(甚至在linux上也不起作用)- 我强烈建议不要通过执行文件来测试它是否可执行。如果你不知道文件是什么,不要只是运行它!这是一场安全和普遍破坏的噩梦。这类似于通过饮用一小瓶透明液体来测试它是否有毒 步骤1:通过stat 在posix(linux、mac、bsd)上,使用fs.stat,然后检查mode字段以检查各种排列可执行文件 步骤2:读取文件数据的开头并猜测类型 您可以在其上运行,它将使用

我正在寻找一种独立于平台(win、mac、linux)的方法来确定文件是否可执行。以下内容对我不起作用(甚至在linux上也不起作用)-


我强烈建议不要通过执行文件来测试它是否可执行。如果你不知道文件是什么,不要只是运行它!这是一场安全和普遍破坏的噩梦。这类似于通过饮用一小瓶透明液体来测试它是否有毒

步骤1:通过
stat
在posix(linux、mac、bsd)上,使用
fs.stat
,然后检查
mode
字段以检查各种排列可执行文件

步骤2:读取文件数据的开头并猜测类型 您可以在其上运行,它将使用一个幻数数据库和其他启发式方法来猜测文件类型

窗户 就独立于平台而言,AFAIK这种功能在Windows上还不够相似,因此不可能有与上述面向posix的技术相当的可靠Windows。Windows文件系统和文件类型是不同的,所以我认为如果你想让它真正起作用,你需要一个单独的实现来正确地处理Windows(还有其他人建议如何在Windows上实现它)。

我使用nodejs模块来了解文件的mime类型

var spawn = require("child_process").spawn;
var proc = spawn("whatever file");
proc.stderr.on('data', function (data) {
  if (/^execvp\(\)/.test(data)) {
    console.log('Failed to start child process.');
  }
});