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à
Bài liên quan
À không hẳn của Node.js đâu bạn…
Cơ bản là thế này…
Bạn nên sử dung dấu “/” để an toàn
Ủ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à
Chuyển tất cả \ về thành \\
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ứ
Trong nodejs thì path của windows dùng \\ chứ không phải \ nhé. (vì \ là kí tự đặc biệt trong string)
Không chối nhé… Bạn sử dung “” chứ không phải “\” như @iamz vừa nói…
Tks nhé bị nhầm rồi :3 \\ để nó nhận thành dấu \ nhé
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
Thì mình nói trong nodejs mà, do không giải thích rõ ra nên nó chọi nhau :3
À, không riêng gì Node.js đâu Hồi đó code mấy ngôn ngữ khác cũng bị…
Thì \ là kí tự đặc biệt trong string của hầu hết ngôn ngữ mà
oh… có vẻ chúng ta đang không hiểu nhau Sorry bạn nhé