《node入门》学习

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行有修改

时间: 2024-10-22 11:02:05

《node入门》学习的相关文章

node入门学习(一)

一.安装node.js 方式很多npm,git等,新手建议从官网上直接去下载node的安装包.一键安装. 二.创建一个web服务器. const http = require('http'); http.createServer(function(request,response){ response.writeHead(200,{'Content-Type':'text/plain'}); response.end('Hello World'); }).listen(8888); consol

node入门学习(二)

一.模块系统 1.创建模块和引用模块 //如何创建一个模块 exports.hello = function(){ console.log('hello worl'); }; //这创建了一个模块 //如何引用模块 //1.require(); var hello = require('./module.js'); hello.hello(); //2. var {hello} = require('./module.js'); hello(); 2.服务端的模块 //服务端的模块 var ht

node入门学习1

一个普通网站访问过程(1)浏览器向服务器发出一个HTTP请求(2)域名解析为IP地址(3)建立TCP连接(4)浏览器发起HTTP请求(5)服务器接收到HTTP请求,解析请求的路径和参数 出现乱码的原因:编码(1)设置内容类型的响应头res.setHeader('Content-Type','text/html;charset=utf-8');(2)需要判断URl,看请求的是什么有个问题:为什么平时不请求(3)请求方式GET获取资源POST提交数据

Node.js学习笔记【1】入门(服务器JS、函数式编程、阻塞与非阻塞、回调、事件、内部和外部模块)

笔记来自<Node入门>@2011 Manuel Kiessling JavaScript与Node.js Node.js事实上既是一个运行时环境,同时又是一个库. 使用Node.js时,我们不仅仅在实现一个应用,同时还实现了整个HTTP服务器. 一个基础的HTTP服务器 server.js:一个可以工作的HTTP服务器 var http = require("http"); http.createServer(function(request, response) { r

[Todo] Nodejs学习及Spider实验(包括php入门学习、React入门学习)

/Users/baidu/Documents/Data/Interview/Web-Server开发 深入浅出Node.js-f46c http://blog.csdn.net/u012273376/article/details/52736906 利用nodejs做爬虫 http://www.runoob.com/nodejs/nodejs-callback.html nodejs学习之路 http://www.runoob.com/php/php-tutorial.html php学习之路

Less入门学习总结

Less入门学习总结 一.什么是Less   css的Less好比是js的Jquery,可以让人们更方遍快捷的使用css,使css代码更简洁,可以减少重复的代码,减少开发人员的工作量. Less CSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS赋予了动态语言的特性,如变量.继承.运算.函数等,更方便CSS的编写和维护. Less中文手册:less.bootcss.com 二.编译工具 1.Koala:国人开发的LESS/SASS编译工具 下载地址:http:

Node入门(转)

原文链接:http://www.nodebeginner.org/index-zh-cn.html Node入门 作者: Manuel Kiessling翻译: goddyzhao & GrayZhang & MondayChen 关于 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识.本书绝不是一本“Hello World”的教程. 状态 你正在阅读的已经是本书的最终版.因此,只有当进行错误更正以及针对新版本Node.js的改动进行

系列文章--Node.js学习笔记系列

Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学习笔记(四)--- 与MySQL交互(felixge/node-mysql) Nodejs学习笔记(五)--- Express安装入门与模版引擎ejs Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识 Nodejs学习笔记(七)--- Node.js + Exp

Node.Js学习01: Module System 以及一些常用Node Module

Node.Js学习就按照这本书的流程来. 在第7章结束与第10章结束时分别自己出一个小项目练练手.Node.Js的入门学习计划是这样. 目录:, QQ:1045642972 欢迎来索书以及讨论Node.Js. Node.Js Demo Node.Js官网提供了一个最基本的Demo Code: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type':