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

node.js系列(实例):原生node.js+formidable模块实现简单的文件上传的更多相关文章

  1. 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理

    服务器文档下载zip格式   刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...

  2. js实现简单的文件上传

    文件下载:https://www.cnblogs.com/xiaomili/p/10521160.html  html: <form name="form1" id=&quo ...

  3. Vue.js 3.0搭配.NET Core写一个牛B的文件上传组件

    在开发Web应用程序中,文件上传是经常用到的一个功能. 在Jquery时代,做上传功能,一般找jQuery插件就够了,很少有人去探究上传文件插件到底是怎么做的. 简单列一下我们要做的技术点和功能点 使 ...

  4. python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,

    python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...

  5. 纯js实现最简单的文件上传(后台使用MultipartFile)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. java struts2入门学习实例--使用struts2快速实现多个文件上传

    一.错误提示信息配置 昨天说到更改默认错误配置信息,我测试很多遍,一直都不对.下面贴出来,待以后有好方法了再补充吧. 首先新建一个properties文件,这里命名为testupload.proper ...

  7. 基于uploadify.js实现多文件上传和上传进度条的显示

    uploadify是JQuery的一个插件,主要实现文件的异步上传功能,可以自定义文件大小限制.文件类型.是否自动上传等属性,可以显示上传的进度条.官网地址是http://www.uploadify. ...

  8. SpringMVC+ajax文件上传实例教程

    原文地址:https://blog.csdn.net/weixin_41092717/article/details/81080152 文件上传文件上传是项目开发中最常见的功能.为了能上传文件,必须将 ...

  9. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

随机推荐

  1. Lambda&Java多核编程-5-函数式接口与function包

    从前面的总结中我们知道Lambda的使用场景是实现一个函数式接口,那么本篇就将阐述一下何为函数式接口以及Java的function包中提供的几种函数原型. 函数式接口 早期也叫作SAM(Single ...

  2. 关于vue-clidown到本地后,拷贝文件库到另外一台电脑上npm run dev编译报错的处理

    这些天自己在用vue-cli项目,在家里的电脑下下来后写了一些demo,拿到公司继续开发的时候发现删除node_modules文件,运行npm install和npm run 百度,搜狗了好久都没有找 ...

  3. ST HW2 fault & error & failure

    Software Testing 3014218128 牛菲菲 Below are two faulty programs. Each includes a test case that result ...

  4. [LeetCode] Trapping Rain Water II 题解

    题意 题目 思路 我一开始想的时候只考虑到一个结点周围的边界的情况,并没有考虑到边界的高度其实影响到所有的结点盛水的高度. 我们可以发现,中间是否能够盛水取决于边界是否足够高于里面的高度,所以这必然是 ...

  5. [译]Selenium Python文档:一、安装

    1.1.简介 Selenium Python为使用Selenium WebDriver来编写功能/验证测试提供了一个简单的API接口.通过Selenium Python API,你可以以一种非常直观的 ...

  6. (转)关闭iptables和SELinux

    1. 关闭SELinux setenforce 0   #临时关闭 编辑/etc/selinux/config,找到SELINUX 行修改成为:SELINUX=disabled:     #永久关闭, ...

  7. 我的第一本docker书-阅读笔记

    花了三四天看完了我的第一本docker书,话说书写的还是挺简单易懂的.与传统的VM,VirtualBox,或者与那种内核虚拟的xen,kvm相比,docker作为一种容器的虚拟方式,以启动进程的方式来 ...

  8. Windows上安装Kafka需要注意的几点

    1.不能安装在有空格的路径上 比如:D:\Program Files 2.设置日志路径时,要用"/",不能用Windows上的"\",比如: # A comma ...

  9. SpringMVC参数校验(针对`@RequestBody`返回`400`)

    SpringMVC参数校验(针对@RequestBody返回400) 前言 习惯别人帮忙做事的结果是自己不会做事了.一直以来,spring帮我解决了程序运行中的各种问题,我只要关心我的业务逻辑,设计好 ...

  10. css3圆环闪烁动画

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...