node.js系列(实例):原生node.js+formidable模块实现简单的文件上传
2016-07-15 15:40
1111 查看
/** * 原生node.js结合formidable模块实现图片上传改名 * @Author:Ghost * @Date:2016/07/15 * @description: * 1、引入模块http、formidable、fs、silly-datetime、path * 2、创建http服务器 * 3、实例化formidable对象并调用IncomingForm()方法 * 4、调用uploadDir属性设置文件上传路径 * 5、调用formidable parse()方法对表单进行解析 * 6、调用fs的rename()方法对上传的文件进行重命名 * 7、结束程序 */ //引入模块 var http = require('http'); var formidable = require('formidable'); var fs = require('fs'); var sd = require('silly-datetime'); var path = require('path'); var util = require('util'); //创建服务器 var server = http.createServer(function (req,res) { //上传表单数据接收 if(req.url === '/upload_setname' && req.method.toLowerCase() === 'post') { //实例化formidable对象,然后调用该对象下的IncomingForm()方法 var form = formidable.IncomingForm(); //调用form.uploadDir属性设置文件上传的路径 form.uploadDir = "./uploads"; //调用form.parse()方法表单提交的所有数据,字段、文件等 form.parse(req,function (err, fields, files) { //如果出错则终止程序并抛出错误 if(err) { throw err; }; //调用fs模块进行文件改名的rename(oldpath,newpath,callback)方法改名,该方法接收三个参数 var oldpath = __dirname+'/'+files.upload.path; //新路径由三部分组成,时间戳、随机数、扩展名 var time = sd.format(new Date(),"YYYYMMDDHHmmss"); var random = parseInt(Math.random() * 89999 + 10000); var extname = path.extname(files.upload.name); var newpath = __dirname + "/uploads/" + time + random + extname; fs.rename(oldpath,newpath, function (err) { //如果出错则终止程序并抛出错误 if(err) { throw Error("upload error"); }; //设置MIME类型 res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"}); //打印检查信息 res.end(util.inspect({fields: fields, files: files})); //响应结束,输出结果信息 res.end("success"); }); }); }; }); //设置监听端口 server.listen(3000, "127.0.0.1", function () { console.log("server is started listen port 3000"); });
相关文章推荐
- 237. Delete Node in a Linked List
- Sqoop import加载HBase过程中,遇到Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
- 19. Remove Nth Node From End of List
- 使用nvm进行node多版本管理
- npm, node版本更新
- 利用node.js来mock假数据
- Node.js和Express安装
- express+nodejs编程
- node.js学习笔记(21) express日志
- OpenStack Icehouse Installation - Multi Node
- 关于Node节点上一些坐标的转换的运用
- nodejs异步控制利器Async
- NodeJs 国内镜像
- nodejs基于async waterfall/retry的出错重试流程设计
- Leetcode题解 24. Swap Nodes in Pairs
- Leetcode题解 19. Remove Nth Node From End of List
- 使用NodeJS的Express4.X框架写WEB应用
- Reverse Nodes in k-Group
- leetcode_c++:链表:Remove Nth Node From End of List(019)
- Swap Nodes in Pairs