Maison > interface Web > js tutoriel > le corps du texte

Une erreur se produit lors de l'appel de fs.renameSync dans Node.js ?

亚连
Libérer: 2018-06-15 13:39:45
original
2036 Les gens l'ont consulté

Cet article présente principalement l'erreur signalée lorsque Node.js appelle fs.renameSync (Erreur : EXDEV, lien multi-appareils non autorisé). Il est d'une grande valeur pratique. Les amis qui en ont besoin peuvent s'y référer

<.> avant d'en écrire un Lors de l'utilisation de la fonction de téléchargement de fichiers, il y a une erreur lors de l'appel de la méthode fs.renameSync

Le code d'erreur est le suivant :

 function upload(response,request){
 console.log("upload called");
 var form = new formidable.IncomingForm();
 console.log("about to parse");
 form.parse(request, function(error, fields, files) {
  console.log("parsing done");
  fs.renameSync(files.upload.path, "./tmp/test.jpg");
  response.writeHead(200, {"Content-Type": "text/html"});
  response.write("received image:<br/>");
  response.write("<img src=&#39;/show&#39; />");
  response.end();
 });
 }
Copier après la connexion
Après une analyse approximative, on estime qu'il existe des problèmes d'autorisation lors du déplacement ou de l'exploitation de fichiers sur des partitions de disque.

Deux solutions sont proposées ci-dessous :

Méthode 1 :

Utiliser principalement les méthodes createReadStream, createWriteSream et unlinkSync de fs

Le code spécifique est le suivant :

 function upload(response,request){
 console.log("upload called");
 var form = new formidable.IncomingForm();
 console.log("about to parse");
 form.parse(request, function(error, fields, files) {
  console.log("parsing done");

 // fs.renameSync(files.upload.path, "./tmp/test.jpg");
  var readStream=fs.createReadStream(files.upload.path);
  var writeStream=fs.createWriteStream("./tmp/test.jpg");
  readStream.pipe(writeStream);
  readStream.on(&#39;end&#39;,function(){
  fs.unlinkSync(files.upload.path);
  });

  response.writeHead(200, {"Content-Type": "text/html"});
  response.write("received image:<br/>");
  response.write("<img src=&#39;/show&#39; />");
  response.end();
 });
 }
Copier après la connexion
PS : La version du nœud que j'utilise est la 0.10.69. Si vous utilisez une version inférieure à 0.6, vous pouvez utiliser util.pump<. 🎜>

Le code correspondant n'a besoin que de changer le readStream.on dans le code ci-dessus en : (notez l'introduction du module util)

util.pump(readStream,writeStream, function() {
 fs.unlinkSync(&#39;files.upload.path&#39;);
});
Copier après la connexion
Méthode 2 :

De cette façon, c'est beaucoup plus simple

Ajoutez simplement form.uploadDir='tmp' (écrivez un chemin temporaire)

Ce qui précède est ce que j'ai compilé pour tout le monde, j'espère. cela sera utile à tout le monde à l’avenir.
 function upload(response,request){
 console.log("upload called");
 var form = new formidable.IncomingForm();
 form.uploadDir=&#39;tmp&#39;;
 console.log("about to parse");
 form.parse(request, function(error, fields, files) {
  console.log("parsing done");
  fs.renameSync(files.upload.path, "./tmp/test.jpg");
  response.writeHead(, {"Content-Type": "text/html"});
  response.write("received image:<br/>");
  response.write("<img src=&#39;/show&#39; />");
  response.end();
 });
 }
Copier après la connexion

Articles associés :

Comment implémenter diverses méthodes de tri à l'aide de js

Comment implémenter un jeu de devinettes en utilisant JavaScript (tutoriel détaillé)

Comment utiliser le module de nœud et l'outil de gestion de packages npm

Comment utiliser JS pour implémenter la fonction de recherche d'entrée

Comment implémenter WeChat Jump Game à l'aide de Three.js

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!