node.js系列(实例):原生node.js+formidable模块实现简单的文件上传
/**
* 原生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模块实现简单的文件上传的更多相关文章
- 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理
服务器文档下载zip格式 刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...
- js实现简单的文件上传
文件下载:https://www.cnblogs.com/xiaomili/p/10521160.html html: <form name="form1" id=&quo ...
- Vue.js 3.0搭配.NET Core写一个牛B的文件上传组件
在开发Web应用程序中,文件上传是经常用到的一个功能. 在Jquery时代,做上传功能,一般找jQuery插件就够了,很少有人去探究上传文件插件到底是怎么做的. 简单列一下我们要做的技术点和功能点 使 ...
- python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,
python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...
- 纯js实现最简单的文件上传(后台使用MultipartFile)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- java struts2入门学习实例--使用struts2快速实现多个文件上传
一.错误提示信息配置 昨天说到更改默认错误配置信息,我测试很多遍,一直都不对.下面贴出来,待以后有好方法了再补充吧. 首先新建一个properties文件,这里命名为testupload.proper ...
- 基于uploadify.js实现多文件上传和上传进度条的显示
uploadify是JQuery的一个插件,主要实现文件的异步上传功能,可以自定义文件大小限制.文件类型.是否自动上传等属性,可以显示上传的进度条.官网地址是http://www.uploadify. ...
- SpringMVC+ajax文件上传实例教程
原文地址:https://blog.csdn.net/weixin_41092717/article/details/81080152 文件上传文件上传是项目开发中最常见的功能.为了能上传文件,必须将 ...
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
随机推荐
- jquery 中时间的运用
运用Moment插件比较方面,有兴趣可以仔细阅读 http://momentjs.cn/
- RMI原理及简单示例
分布式对象 在学习 RMI 之前,先来分布式对象(Distributed Object):分布式对象是指一个对象可以被远程系统所调用.对于 Java 而言,即对象不仅可以被同一虚拟机中的其他客户程序( ...
- golang中的rpc包用法
RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样. 我所在公司的项目是采用基于Restful的微服务架构,随着微服 ...
- HTML友情链接代码
<div align="center"> <table width="980" height="35" borde ...
- KoaHub.JS用于Node.js的可移植Unix shell命令程序代码
shelljs Portable Unix shell commands for Node.js ShellJS - Unix shell commands for Node.js Shell ...
- Java Stream API入门篇
本文github地址 你可能还没意识到Java对函数式编程的重视程度,看看Java 8加入函数式编程扩充多少类就清楚了.Java 8之所以费这么大功夫引入函数式编程,原因有二: 代码简洁,函数式编程写 ...
- 1583: [Usaco2009 Mar]Moon Mooing 哞哞叫
1583: [Usaco2009 Mar]Moon Mooing 哞哞叫 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 244 Solved: 126 ...
- iOS程序进入后台,延迟指定时间退出
程序进入后台,延迟指定时间退出 正常程序退出后,会在几秒内停止工作:要想申请更长的时间,需要用到beginBackgroundTaskWithExpirationHandlerendBackgroun ...
- 在VM中给Linux安装Tool
1.导入tool 2.解压tool 3.打开终端,进入tool的目录,输入 ./XXXXXXX.pl 4.进入安装界面,不断回车即可
- Python中类的方法属性与方法属性的动态绑定
最近在学习python,纯粹是自己的兴趣爱好,然而并没有系统地看python编程书籍,觉得上面描述过于繁琐,在网站找了一些学习的网站,发现廖雪峰老师的网站上面的学习资源很不错,而且言简意赅,提取了一些 ...