我有一个文件(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!");
});
Run Code Online (Sandbox Code Playgroud)
错误:
{ [Error: ENOENT: no such file or directory, open '/avatar/myFile.png']
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: '/avatar/myFile.png' }
Run Code Online (Sandbox Code Playgroud)
Ser*_*geS 72
这可能是因为您尝试写入文件系统的根而不是您的应用程序目录'/avatar/myFile.png'- > __dirname + '/avatar/myFile.png'应该这样做,还要检查文件夹是否存在.node.js不会为您创建父文件夹.
Luk*_*kas 11
我们中的许多人都收到此错误,因为父路径不存在.例如,您有/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);
});
}
Run Code Online (Sandbox Code Playgroud)
来源和完整讨论:https://stackoverflow.com/a/16317628/1737158
或者,如果您有可以使用async/await的环境:
const mkdirp = require('mkdirp');
const fs = require('fs');
const writeFile = async (path, content) => {
await mkdirp(path);
fs.writeFileSync(path, content);
}
Run Code Online (Sandbox Code Playgroud)
小智 10
在创建文件之前异步创建一些嵌套文件夹时,我遇到了这个错误。在承诺开始写入文件之前,并不总是会创建目标文件夹。我通过使用mkdirSync而不是 'mkdir' 来同步创建文件夹来解决这个问题。
try {
fs.mkdirSync(DestinationFolder, { recursive: true } );
} catch (e) {
console.log('Cannot create folder ', e);
}
fs.writeFile(path.join(DestinationFolder, fileName), 'File Content Here', (err) => {
if (err) throw err;
});
Run Code Online (Sandbox Code Playgroud)
它告诉你该avatar文件夹不存在。在将文件写入此文件夹之前,您需要检查名为 的目录是否"avatar"存在,如果不存在,则创建它:
if (!fs.existsSync('/avatar')) {
fs.mkdirSync('/avatar', { recursive: true});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40615 次 |
| 最近记录: |