web-dev-qa-db-fra.com

Copier un fichier source vers une autre destination dans Nodejs

J'essaie de copier une image d'un dossier à un autre en utilisant le module fs-extra.

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

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

Ceci est mon répertoire

et c'est l'erreur que j'obtiens tout le temps:

Erreur {errno: -4058, code: "ENOENT", appel système: "lstat", chemin: "E:\mainisp.jpg", message: "ENOENT: aucun fichier ou répertoire de ce type, lstat 'E:\mainisp.jpg'"}

et en changeant la destination en ./test/ j'obtiens cette erreur

Erreur {errno: -4058, code: "ENOENT", appel système: "lstat", chemin: "Logiciels E:\Développement\Noeud\Logiciels de noeuds\Bibliothèque_library\mainisp.jpg", message: "ENOENT: aucun fichier ou répertoire de ce type, lstat 'E:\Devel… logiciels\Node\Digital_library\mainisp.jpg'"}

Note: Je ne teste pas ceci dans le navigateur. C'est une application Nwjs et les images d'erreur ci-jointes proviennent de la console Nwjs.

8
Rao Hammas Hussain

Vous pouvez le faire en utilisant facilement le module natif fs en utilisant des flux.

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));
}
16
peteb

Essayer: 

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

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

Comme vous pouvez le constater dans le message d'erreur, vous essayez de lire le fichier à partir de E:\mainisp.jpg au lieu du répertoire actuel.

Vous devez également spécifier le chemin cible avec le fichier, pas seulement le dossier de destination.

9
alejandromav

Essayer:

const fs = require('fs');
fs.copyFileSync(src, dest);
0
Karan Vyas