/**
* 原生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");
});

最新文章

  1. ASP.NET Web API 过滤器创建、执行过程(一)
  2. sql 分组取最新的数据sqlserver巧用row_number和partition by分组取top数据
  3. 更改SQL Server 数据库的排序规则
  4. poj2031 Building a Space Station
  5. mysql 的 存储结构(储存引擎)
  6. cocos2d-x读取xml(适用于cocos2d-x 2.0以上版本号)
  7. php知识(第2天)
  8. Andorid Binder进程间通信---总结
  9. .net core 项目文件结构浅析
  10. 《剑指offer》数组中出现次数超过数组长度一半的数字
  11. 『集群』007 如何测试Slithice源代码
  12. VUE路由携带参数的三种方式
  13. (译)xDS REST and gRPC protocol
  14. { MySQL基础数据类型}一 介绍 二 数值类型 三 日期类型 四 字符串类型 五 枚举类型与集合类型
  15. Python3基础 list reverse 反转列表
  16. 从flask视角理解angular(三)ORM VS Service
  17. bzoj3332
  18. delphi批量存入多媒体字段 遇到内存溢出的坑
  19. hdu 2189 悼念512汶川大地震遇难同胞——来生一起走
  20. HTML中内联元素与块状元素介绍

热门文章

  1. 五金配件行业ERP解决方案
  2. Python 3 读写文件的简单方法!
  3. apicloud中dialog使用方法
  4. 写lua时需要注意的地方
  5. 基于requirejs+bluebird,50行代码实现轻巧实用的前端CMD加载器
  6. Java线程池ExecutorService
  7. linux apache添加多站点配置(Ubuntn和Centos)
  8. C#全局鼠标键盘Hook
  9. cuda内存总结
  10. flex与后台及页面间对象的传递