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应用系统开发中,文件上传和下载功能是非常常用的功能 ...
随机推荐
- 每一个程序员都应该知道的高并发处理技巧、创业公司如何解决高并发问题、互联网高并发问题解决思路、caoz大神多年经验总结分享
本文来源于caoz梦呓公众号高并发专辑,以图形化.松耦合的方式,对互联网高并发问题做了详细解读与分析,"技术在短期内被高估,而在长期中又被低估",而不同的场景和人员成本又导致了巨头 ...
- 【JS】JavaScript中的闭包
在JavaScript中,闭包指的是有权访问另一个函数作用域中的变量的函数:创建闭包最常见的方式就是在一个函数内创建另一个函数.如下例子: function A(propertyName){ retu ...
- ReactJS React+Redux+Router+antDesign通用高效率开发模板,夜间模式为例
工作比较忙,一直没有时间总结下最近学习的一些东西,为了方便前端开发,我使用React+Redux+Router+antDesign总结了一个通用的模板,这个技术栈在前端开发者中是非常常见的. 总的来说 ...
- python 接口自动化测试(一)
一.测试需求描述 对服务后台一系列SOAP接口功能测试 参数传入:根据接口描述构造不同的参数输入值(Json格式) 二.程序设计 通过Excel配置具体的测试用例数据 保存参数为Json格式,预写入预 ...
- JSON的服务器开发之路
JSON的服务器开发之路 不知道需要哪儿些包... /dcywpt/WebRoot/WEB-INF/lib/commons-collections-3.2.jar /dcywpt/WebRoot/WE ...
- mybatis基础学习2---(resultType和resultMap的用法和区别)和setting的用法
1:resultType和resultMap两者只能有一个成立 2:resultMap可以解决复杂查询时的映射问题 3:使用 resultType使用 ------------------------ ...
- JAVA基础知识(2)--队列的操作
队列是一种线性表,它只允许在该表中的一端插入,在另一端删除. 允许插入的一端叫做队尾(rear),允许删除的一端叫做队头(front): 下面用Java的数组进行模拟队列的操作: /**2015-07 ...
- SpringMVC中@RequestBody引起的400异常处理,返回校验失败具体信息
问题 使用@RequestBody接收一个json数据的时候,如果传入的参数不符合条件,就会直接返回400的error page. 但究竟是为什么会400并没有抛出来.这对大量参数字段的我们来说,排错 ...
- java初学代码,还不太熟练
奇数和 public class Homework01{ public static void main(String [] args){ long t=1,s=0; do{ s=s+t; t= ...
- ubuntu nsight上链接OpenGL
写一个需要使用OpenGL的程序,右击该程序名,此处需要OpenGL库的程序为Julia-C 右击,选择属性,弹出属性对话框,在左边选择build下的设置,中间窗格中选择GCC C++ Linker下 ...