【问题标题】:node.js Error: EISDIR, opennode.js 错误:EISDIR,打开
【发布时间】:2015-11-03 07:14:31
【问题描述】:

我尝试上传文件并移动到已经存在的新目录。 关注Writing files in Node.js 但我得到了错误: Error: EISDIR, open '/Users/name/Sites/project/app/assets/images/UploadTemporary/' at Error (native)

我发现Using Node.js I get, "Error: EISDIR, read"Node.js Error: EISDIR, open Error 类似的错误信息,我的UploadTemporary 文件夹已经存在我搞错了什么? 我不明白,如果它不是目录,还能是什么?

var multipart = require('connect-multiparty');
var fs = require('fs');
var path = require('path');
var appDir = path.dirname(require.main.filename);

...
var sourceFile = req.files.file[0].path;
var destinationFile = appDir + '/assets/images/UploadTemporary/';

var source = fs.createReadStream(sourceFile);
var destination = fs.createWriteStream(destinationFile);

source.pipe(destination);
source.on('end', function () {
  fs.unlinkSync(sourceFile);
});

【问题讨论】:

  • 你需要在destinationFile中给出实际的文件名
  • 你的意思是这样的var destinationFile = appDir+'/assets/images/UploadTemporary/'+newfilename
  • 没错。我认为您认为仅提供目录名称将创建一个具有源文件名称的文件,对吧?

标签: javascript node.js fs


【解决方案1】:

当您将文件写入特定目录时,您还需要提供实际的目标文件名。与cp 命令不同,fs 模块不会推断目标文件名。

在您的情况下,您正在尝试写入目录而不是文件。这就是您收到EISDIR 错误的原因。如您在 cmets 中提到的,要解决此问题,

var destinationFile = appDir + '/assets/images/UploadTemporary/' + newfilename;

也包括文件名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-23
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多