writeFile нет такого файла или каталога
у меня есть файл(data.file
изображение), я хотел бы сохранить этот образ. Теперь изображение с тем же именем может существуют до него. Я хотел бы перезаписать, если да, или создать его, если он не существует с тех пор. Я читал, что флаг " w " должен это сделать.
код:
fs.writeFile('/avatar/myFile.png', data.file, {
flag: "w"
}, function (err) {
if (err) {
return console.log(err);
}
console.log("The file was saved!");
});
ошибка:
{ [Error: ENOENT: no such file or directory, open '/avatar/myFile.png']
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '/avatar/myFile.png' }
3 ответов
это, вероятно, потому, что вы пытаетесь написать в корень файловой системы вместо каталога приложения '/avatar/myFile.png'
->__dirname + '/avatar/myFile.png'
должен сделать трюк, также проверьте, существует ли папка. узел.js не будет создавать родительскую папку для вас.
Я решил аналогичную проблему, когда я пытался создать файл с именем, содержащим символы, которые не разрешены. Следите за этим, потому что он дает то же сообщение об ошибке.
многие из нас получают эту ошибку, потому что родительский путь не существует. Е. Г. у вас есть /tmp
каталог доступен, но нет папки "foo", и вы пишете в /tmp/foo/bar.txt
.
чтобы решить эту проблему, вы можете использовать:
var mkdirp = require('mkdirp');
var fs = require('fs');
var getDirName = require('path').dirname;
function writeFile(path, contents, cb) {
mkdirp(getDirName(path), function (err) {
if (err) return cb(err);
fs.writeFile(path, contents, cb);
});
}
источник и полное обсуждение:https://stackoverflow.com/a/16317628/1737158
или если у вас есть среда, где вы можете использовать async/await на:
const mkdirp = require('mkdirp');
const fs = require('fs');
const writeFile = async (path, content) => {
await mkdirp(path);
await fs.writeFileSync(path, content);
}