node read 图片 tip reat 属性 ldp func method
Node实现一个表单处理+图片上传功能,不是用express
1.使用formidable模块用于上传文件(图片)的处理。注意form表单要使用multipart/form-data属性。
2.使用chunk分段接收,原因是当接受了一小段,可能就给别人服务了。防止一个过大的表单阻塞了整个进程
3.上传上去的图片使用formidable自定义路径,用fs改名。
4.实现简单的路由。
- var http = require("http");
- var querystring = require("querystring");
- var formidable = require(‘formidable‘);
- var util = require("util");
- var sd = require("silly-datetime");
- var fs = require("fs");
- var path = require("path");
- //创建服务器创建服务器
- var server = http.createServer(function (req, res) {
- if(req.url == "/dopost" && req.method.toLowerCase() == "post") {
- //Create a new incoming form.
- var form = new formidable.IncomingForm();
- form.uploadDir = "./uploads";
- //执行里面的回调函数的时候,表单已经全部接收完毕了
- form.parse(req, function (err, fields, files) {
- if(err) {
- throw err;
- }
- console.log(util.inspect({fields:fields,files:files}));
- //时间,使用了第三方模块,silly-datetime
- var ttt = sd.format(new Date(), "YYYMMDDHHmmss");
- var ran = parseInt(Math.random() * 89999 + 10000);
- var extname = path.extname(files.tupian.name);
- //执行改名
- var oldpath = __dirname + "/" + files.tupian.path;
- //新的路径由三个部分组成:时间戳,随机数,拓展名
- var newpath = __dirname + "/uploads/" + ttt + ran + extname;
- fs.rename(oldpath,newpath,function (err) {
- if(err) {
- throw Error("改名失败")
- }
- res.writeHead(200, {"Content-type":"text/plain"});
- res.end("success");
- });
- });
- }else if(req.url == "/") {
- //呈现form.html
- fs.readFile("./form.html", function (err,data) {
- res.writeHead(200, {"content-type":"text/html"});
- res.end(data);
- })
- }else {
- res.writeHead(404,{"content-type":"text/html"});
- res.end("404");
- }
- });
- server.listen(3000,"127.0.0.1");
Node实现简单的表单+图片上传+路由
node read 图片 tip reat 属性 ldp func method
原文:http://www.cnblogs.com/zhangmingzhao/p/7795908.html
来源: http://www.bubuko.com/infodetail-2383788.html