Скопируйте исходный файл в другое место назначения в Nodejs

Я пытаюсь скопировать изображение из папки в другую с помощью модуля fs-extra.

var fse = require('fs-extra');

function copyimage() {
  fse.copy('mainisp.jpg', './test', function (err) {     
    if (err) 
      return console.error(err)
  });
}

Это мой каталог

и это ошибка, которую я получаю все время:

Ошибка {errno: -4058, код: "ENOENT", системный вызов: "lstat", путь: "E:\mainisp.jpg", сообщение: "ENOENT: нет такого файла или каталога, lstat 'E:\mainisp.jpg'"}

и изменив пункт назначения на ./test/ Я получаю эту ошибку

Ошибка {errno: -4058, код: "ENOENT", системный вызов: "lstat", путь: "E:\Development\Node apps\Node softwares\Digital_library\mainisp.jpg", сообщение: "ENOENT: нет такого файла или каталога, lstat 'E:\Devel… apps\Node softwares\Digital_library\mainisp.jpg'"}

Примечание: я не проверяю это в браузере. Это приложение Nwjs, и прикрепленные картинки с ошибками взяты из консоли Nwjs.

3 ответа

Решение

Вы можете сделать это с помощью родного 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));
}

Пытаться:

var fs = require('fs-extra');

fs.copySync(path.resolve(__dirname,'./mainisp.jpg'), './test/mainisp.jpg');

Как видно из сообщения об ошибке, вы пытаетесь прочитать файл с E:\mainisp.jpg вместо текущего каталога.

Вам также необходимо указать путь к файлу, а не только папку назначения.

Пытаться:

const fs = require('fs');
fs.copyFileSync(src, dest);
Другие вопросы по тегам