File structure:
Index.js
var server = require ('./server.js '); var router = require ('./router.js '); var requesthandlers = require ("./requesthandlers"); var handle = {}handle["/"] = requesthandlers.start;handle["/start"] = requesthandlers.start;handle["/upload"] = requesthandlers.upload;handle["/show"] = Requesthandlers.show;server.start (router.route,handle);
Server.js
varHTTP = require ("http");varurl = require ("url");functionStart (route,handle) {functionONrequest (request,response) {varPostData = ""; varpathname =Url.parse (request.url). Pathname; //request.setencoding ("UTF8"); //Request.addlistener ("Data", function (postdatachunk) { //PostData + = Postdatachunk; //console.log ("Received POST data chunk '" + //postdatachunk + "'."); // }); //Request.addlistener ("End", function () { //Route (Pathname,handle, Response, postdata); // });Route (Pathname,handle, response, request); } http.createserver (ONrequest). Listen (8888);} Exports.start=start;
Router.js
function Route (pathname,handle,response,request) { var handler = Handle[pathname]; Console.log (handler); if (typeof Handler = = "function") { handler (response,request); } Else { console.log ("No request handler found for" + pathname); Response.writehead (404, {"Content-type": "Text/plain"}); Response.Write ("404 Not Found"); Response.End (); }} Exports.route=route;
Requesthandlers.js
varQueryString = Require ("querystring"), FS= Require ("FS"), Formidable= Require ("Formidable");functionStart (response,request) {Console.log ("Request handler ' start ' was called."); varBODY = ' ; Response.writehead ($, {"Content-type": "Text/html"}); Response.Write (body); Response.End ();}functionUpload (response,request) {Console.log ("Request handler ' upload ' was called."); //Response.writehead ($, {"Content-type": "Text/plain"}); //Response.Write ("You ' ve sent:" + postdata); //Response.End (); varform =NewFormidable. Incomingform (); Form.uploaddir= ' tmp '; Console.log ("About-to-parse"); Form.parse (Request,function(Error, fields, files) {Console.log ("Parsing Done"); Fs.renamesync (Files.upload.path,"./tmp/test.png"); Response.writehead ($, {"Content-type": "Text/html"}); Response.Write ("Received image:<br/>"); Response.Write ("); Response.End (); });}functionShow (response, request) {Console.log ("Request handler ' show ' was called."); Fs.readfile ("./tmp/test.png", "binary",function(Error, file) {if(Error) {Response.writehead ({"Content-type": "Text/plain"}); Response.Write (Error+ "\ n"); Response.End (); } Else{Response.writehead ($, {"Content-type": "Image/png"}); Response.Write (File,"Binary"); Response.End (); } });} Exports.start=Start;exports.upload=Upload;exports.show= Show;
The code in this article is referenced from Http://www.nodebeginner.org/index-zh-cn.html#javascript-and-nodejs
"Nodejs" File upload Demo implementation