#javascript #node.js #fs #writefile
#javascript #node.js #fs #запись файла
Вопрос:
Я хочу сохранить изображение с помощью fs.WriteFile, но я не могу этого сделать.
Путь, по которому я хочу это сделать: C:Userspozlotosimages1232133123@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:Userspozlotosimages1232133123@gmail.com1602604489722.jpeg ‘] { ошибка: -4058, код: ‘ENOENT’, системный вызов: ‘open’, путь: ‘C:Userspozlotosimages1232133123@gmail.com1602604489722.jpeg ‘ }
Комментарии:
1. попробуйте
mkdirp.sync(dir)
2. @ManuelSpigolon спасибо, чувак, это работает. Я думал, что это проблема с fs.WriteFile: P
3. К вашему сведению, нет смысла создавать абсолютный путь в
dir
переменной, создавать этот каталог, а затем не использовать ту же переменную при создании имени файла.4. Вначале я пытался сделать все по каталогу, но это не сработало, поэтому я попытался исправить это самостоятельно, изменив путь.
Ответ №1:
mkdirp(dir)
Возвращает обещание, которое не ожидается.
Вы должны вызвать
mkdirp.sync(dir)
Или перепишите свой код в асинхронном стиле.
Я бы предложил использовать:
const savePath = require('path').join(__dirname, '/../../images/', email)
чтобы избежать проблем, связанных с ОС или отсутствующей косой чертой.