Heim > Web-Frontend > js-Tutorial > Beim Aufruf von fs.renameSync in Node.js tritt ein Fehler auf?

Beim Aufruf von fs.renameSync in Node.js tritt ein Fehler auf?

亚连
Freigeben: 2018-06-15 13:39:45
Original
2098 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich der Fehler vorgestellt, der beim Aufruf von fs.renameSync durch Node.js auftritt (Fehler: EXDEV, geräteübergreifende Verknüpfung nicht zulässig). Freunde, die ihn benötigen, können darauf verweisen

Bevor Sie eine Datei schreiben, tritt beim Aufrufen der fs.renameSync-Methode ein Fehler auf.

Der Fehlercode lautet wie folgt:

 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();
 });
 }
Nach dem Login kopieren

Nach einer groben Analyse ist dies der Fall Es wird geschätzt, dass beim Verschieben oder Bearbeiten von Dateien über Festplattenpartitionen hinweg ein Berechtigungsproblem vorliegt.

Im Folgenden werden zwei Lösungen bereitgestellt:

Methode 1:

Verwenden Sie hauptsächlich die Methoden createReadStream, createWriteSream und unlinkSync von fs

Der spezifische Code lautet wie folgt:

 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();
 });
 }
Nach dem Login kopieren

PS: Die von mir verwendete Knotenversion ist 0.10.69. Wenn Sie eine Version unter 0.6 verwenden, können Sie util.pump verwenden

Dementsprechend muss der Code nur readStream.on im obigen Code ändern in: (Beachten Sie die Einführung des util-Moduls)

util.pump(readStream,writeStream, function() {
 fs.unlinkSync(&#39;files.upload.path&#39;);
});
Nach dem Login kopieren

Methode 2:

Das ist viel einfacher

Fügen Sie ein form.uploadDir='tmp' hinzu (schreiben Sie einen temporären Pfad)

 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();
 });
 }
Nach dem Login kopieren

Das Obige ist das, was ich für alle zusammengestellt habe alle in der Zukunft.

Verwandte Artikel:

So implementieren Sie verschiedene Sortiermethoden mit js

So implementieren Sie ein Ratespiel mit JavaScript (ausführliches Tutorial)

So verwenden Sie das Knotenmodul und das NPM-Paketverwaltungstool

So verwenden Sie JS zum Implementieren der Eingabesuchfunktion

So implementieren Sie das WeChat Jump Game mit Three.js

Das obige ist der detaillierte Inhalt vonBeim Aufruf von fs.renameSync in Node.js tritt ein Fehler auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage