1. 程式人生 > >《node入門》學習

《node入門》學習

add 代碼 cal tps .html handle var cnblogs gin

node入門原書地址:https://www.nodebeginner.org/index-zh-cn.html

node入門,循序漸進講了javascript,node的回調和一些api的應用,很清晰,翻譯也很給力。最終是一個例子,可以上傳圖片以及展示。

最後例子,遇到了麻煩,運行報錯

技術分享

可見零時文件已經創建

代碼如下

 1 function upload(response, request){
 2     console.log("Request handler ‘upload‘ was called.");
 3     
 4     var form = new formidable.IncomingForm();
7 form.parse(request,function(error, fields, files){ 8 console.log("parsing done"); 9 console.log("F.U.P: "+files.upload.path); 10 fs.renameSync(files.upload.path, "tmp/test.png"); 11 response.writeHead(200, {"Content-Type": "text/html"}); 12 response.write("received image:<br/>");
13 response.write("<img src=‘/show‘ />"); 14 response.end(); 15 }); 16 17 };

搜過以後發現是fs.renameSync()不能跨盤操作,且不會新建文件夾,所以重新指定路徑“form.uploadDir = "tmp"”,然後在目錄新建tmp文件夾,最後在show函數讀取的路徑做修改

修改後代碼

 1 function upload(response, request){
 2     console.log("Request handler ‘upload‘ was called.");
3 4 var form = new formidable.IncomingForm(); 5 form.uploadDir = "tmp"; 6 //console.log("about to parse"); 7 form.parse(request,function(error, fields, files){ 8 console.log("parsing done"); 9 console.log("F.U.P: "+files.upload.path); 10 /** 11 try{ 12 fs.renameSync(files.upload.path, "tmp/test.png"); 13 }catch(e){ 14 console.log(e); 15 }; 16 17 fs.renameSync(files.upload.path, "tmp/test.png",function(error){ 18 if(error){ 19 fs.unlink("/tmp/test.png"); 20 fs.rename(files.upload.path,"/tmp/test.png"); 21 }; 22 }); 23 **/ 24 fs.renameSync(files.upload.path, "tmp/test.png"); 25 response.writeHead(200, {"Content-Type": "text/html"}); 26 response.write("received image:<br/>"); 27 response.write("<img src=‘/show‘ />"); 28 response.end(); 29 }); 30 31 }; 32 33 function show(response){ 34 console.log("Request handle ‘show‘ was called."); 35 fs.readFile("./tmp/test.png","binary",function(error,file){ 36 if(error){ 37 response.writeHead(500,{"Content-Type":"text/plain"}); 38 response.write(error + "\n"); 39 response.end(); 40 }else{ 41 response.writeHead(200,{"Content-Type":"image/png"}); 42 response.write(file,"binary"); 43 response.end(); 44 }; 45 }); 46 };

第五行及第35行有修改

《node入門》學習