30/09/2018, 17:48

Sự khác nhau giữa "" "/" của path file trong nodejs

 function upload(response, request) {
	console.log("Request handler 'upload' was called.");

	var form = new formidable.IncomingForm();
	console.log("about to parse");
	form.parse(request, function(error, fields, files) {
		console.log("parsing done");
        /*may error on Windows system:
          rename to an already existing file */
		console.log(files.upload.path); //print file path in console
		fs.rename(files.upload.path,  'C:/Users/HIEUXI~1/AppData/Local/Temp/test.png', function(err) {
			if (err) {
			fs.unlink('C:/Users/HIEUXI~1/AppData/Local/Temp/test.png');
			console.log("sucessfully deleted /tmp/test.png");
			fs.rename(files.upload.path,'C:/Users/HIEUXI~1/AppData/Local/Temp/test.png');
			console.log("Renamed complete");
			}
		});
		
	response.writeHead(200, {"Content-Type": "text/html"});
	response.write("Recevied the image<br/>");
	response.write("<img src='/show' />");
	console.log("Received complete")
	response.end();
  });

}

Trong cái đoạn code này em dùng module fs để rename file’s path mà lúc em gõ C:… emp est.png thì nó bị lỗi ENOENT lúc unlink lên stackoverflow nó chỉ đổi thành / thì unlink được. Hơi khó hiểu, ai chỉ cho em vì sao đổi thành / thì chạy được thế, trong khi em console.log(old file path) thì nó là C:… emp… mà

Võ Hoài Nam viết 19:53 ngày 30/09/2018

À không hẳn của Node.js đâu bạn…

Cơ bản là thế này…

  • Hệ điều hành Windows thì tụi nó nhận “” và “/”
  • Hệ điều hành Unix-Linux nói chung, tụi nó chỉ nhận “/” thôi

Bạn nên sử dung dấu “/” để an toàn

Trương Phước Hiệu viết 19:58 ngày 30/09/2018

Ủa nếu windows nhận cả 2 thì khi em để \ thì nó vẫn unlink được chứ, đằng này vẫn bị lỗi ENOENT. Em xài windows mà

I am Z viết 20:02 ngày 30/09/2018

Chuyển tất cả \ về thành \\

Trương Phước Hiệu viết 19:54 ngày 30/09/2018

không, code chạy được rồi. Nhưng mà em ko hiểu là tại sao đổi \ thành / như code bên trên thì lại chạy được. Anh kia bảo windows nhận cả \ và / thì logic thì \ vẫn chạy được chứ

I am Z viết 20:03 ngày 30/09/2018

Trong nodejs thì path của windows dùng \\ chứ không phải \ nhé. (vì \ là kí tự đặc biệt trong string)

Võ Hoài Nam viết 19:55 ngày 30/09/2018

em gõ C:…\temp\test.png

Không chối nhé… Bạn sử dung “” chứ không phải “\” như @iamz vừa nói…

I am Z viết 19:56 ngày 30/09/2018

Tks nhé bị nhầm rồi :3 \\ để nó nhận thành dấu \ nhé

Võ Hoài Nam viết 20:02 ngày 30/09/2018

Sao vậy… thì trong Windows nó hiểu là “” và “/” mà… nhưng trong ngôn ngữ lập trình thì phải viết “\” mới trở thành “” được… Thấy có gì đâu

I am Z viết 20:02 ngày 30/09/2018

Thì mình nói trong nodejs mà, do không giải thích rõ ra nên nó chọi nhau :3

Võ Hoài Nam viết 20:01 ngày 30/09/2018

À, không riêng gì Node.js đâu Hồi đó code mấy ngôn ngữ khác cũng bị…

I am Z viết 20:00 ngày 30/09/2018

Thì \ là kí tự đặc biệt trong string của hầu hết ngôn ngữ mà

Võ Hoài Nam viết 19:50 ngày 30/09/2018

oh… có vẻ chúng ta đang không hiểu nhau Sorry bạn nhé

Bài liên quan
0