作爲普通的web開發,通常都會涉及到post/get方式來請求server,接下來我們要用Node.js來實現一個上傳圖片並瀏覽的功能,所以要先解決post數據的處理問題。
<form action="/upload" method="post"><textarea name="text" rows="20" cols="50"></textarea><inputtype="submit" value="上傳" /></form>
var http = require("http"); var url = require("url"); function start(route,handle) { function onRequest(request,response) { var postData = ""; var pathname = url.parse(request.url).pathname; // console.log("Request for "+pathname+" received.") ; //設置request請求的數據編碼。 request.setEncoding("utf8"); request.addListener("data",function(data){ postData += data; console.log("Received POST data :")+data ; }); request.addListener("end",function(){ route(handle,pathname,response,postData); }) } http.createServer(onRequest).listen(8888); console.log("Server has started"); } exports.start = start;
var querystring = require("querystring") ; function start(response,postData){ var body = '<html>'+ '<head>'+ '<meta http-equiv="Content-Type" content="text/html; '+ 'charset=UTF-8" />'+ '</head>'+ '<body>'+ '<form action="/upload" method="post">'+ '<textarea name="text" rows="20" cols="60"></textarea>'+ '<input type="submit" value="Submit" />'+ '</form>'+ '</body>'+ '</html>'; response.writeHead(200,{"Content-Type":"text/html"}); response.write(body) ; response.end(); return ("Request handler 'start' was called."); } function upload(response, postData){ response.writeHead(200,{"Content-Type":"text/plain"}); //這裏會把post的數據,寫到html頁面上。 response.write("Upload the postData: "+ querystring.parse(postData).text); response.end(); return ("Request handler 'upload' was called."); } exports.start = start; exports.upload = upload;