【问题标题】:Saving file in specified directory Node.js将文件保存在指定目录 Node.js
【发布时间】:2021-01-28 00:14:19
【问题描述】:

我想使用 fs.writeFile 保存图像,但我无法执行此操作。

我要执行此操作的路径:C:\Users\poz\lotos\images\1232133123@gmail.com

我的代码:

    var d = new Date();
    var n = d.getTime() + ".jpeg";
    var dir = "C:/Users/poz/lotos/images/" + email;

    mkdirp(dir);

    var data = image.replace(/^data:image\/jpeg;base64,/,'');

    var dir2 = dir + "/";

    fs.writeFile(__dirname +'/../../images/' + email + '/' + n, data, 'base64' , function(err){
      if (err)
        return console.log(err);
    });

*文件夹已创建。

我得到一个错误:

[错误:ENOENT:没有这样的文件或目录,打开 'C:\Users\poz\lotos\images\1232133123@gmail.com\1602604489722.jpeg'] { 错误号:-4058, 代码:'ENOENT', 系统调用:'打开', 路径:'C:\Users\poz\lotos\images\1232133123@gmail.com\1602604489722.jpeg' }

【问题讨论】:

  • 试试mkdirp.sync(dir)
  • @ManuelSpigolon 感谢它的工作。我以为是 fs.writeFile 问题:P
  • 仅供参考,在 dir 变量中构造绝对路径是没有意义的,创建该目录然后在构造文件名时不要使用相同的变量。
  • 一开始我尝试通过 dir 制作所有内容,但没有成功,所以我尝试通过更改路径自行修复。

标签: javascript node.js fs writefile


【解决方案1】:
mkdirp(dir)

返回一个未被等待的承诺。

你应该打电话

mkdirp.sync(dir)

或者以异步方式重写你的代码。

我建议使用:

const savePath = require('path').join(__dirname, '/../../images/', email)

避免与操作系统相关的问题或缺少斜杠。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多