Fs-extra moduleを使用して、フォルダから別のフォルダに画像をコピーしようとしています。
var fse = require('fs-extra');
function copyimage() {
fse.copy('mainisp.jpg', './test', function (err) {
if (err)
return console.error(err)
});
}
これは私のディレクトリです
そして、これは私がいつも得るエラーです:
エラー{errno:-4058、コード: "ENOENT"、syscall: "lstat"、パス: "E:\ mainisp.jpg"、メッセージ: "ENOENT:そのようなファイルまたはディレクトリはありません、lstat 'E:\ mainisp.jpg' "}
宛先を./test/
に変更すると、このエラーが発生します
エラー{errno:-4058、コード: "ENOENT"、syscall: "lstat"、パス: "E:\ Development\Node apps\Node softwares\Digital_library\mainisp.jpg"、メッセージ: "ENOENT:no such file or directory 、lstat 'E:\ Devel…apps\Node softwares\Digital_library\mainisp.jpg' "}
注:これはブラウザーでテストしていません。これはNwjsアプリであり、添付されているエラーの写真はNwjsコンソールからのものです。
試してください:
var fs = require('fs-extra');
fs.copySync(path.resolve(__dirname,'./mainisp.jpg'), './test/mainisp.jpg');
エラーメッセージでわかるように、現在のディレクトリではなくE:\mainisp.jpg
からファイルを読み取ろうとしています。
また、宛先フォルダーだけでなく、ファイルでターゲットパスを指定する必要があります。
これは、ストリームを使用して簡単にネイティブfs
モジュールを使用して行うことができます。
const fs = require('fs');
const path = require('path');
let filename = 'mainisp.jpg';
let src = path.join(__dirname, filename);
let destDir = path.join(__dirname, 'test');
fs.access(destDir, (err) => {
if(err)
fs.mkdirSync(destDir);
copyFile(src, path.join(destDir, filename));
});
function copyFile(src, dest) {
let readStream = fs.createReadStream(src);
readStream.once('error', (err) => {
console.log(err);
});
readStream.once('end', () => {
console.log('done copying');
});
readStream.pipe(fs.createWriteStream(dest));
}
試してください:
const fs = require('fs');
fs.copyFileSync(src, dest);