node.js+express+jade系列六:图片的上传
安装npm install formidable
先把文件上传到临时文件夹,再通过fs重命名移动到指定的目录即可
fs.rename即重命名,但是fs.rename不能夸磁盘移动文件,所以我们需要指定上传的临时目录要和最终目录在同一磁盘下
前段请求
方法1:使用form标签和submit提交
form(action='/uploadImg', method="post", enctype="multipart/form-data" )
input(type="file", id="file1", name="file1")
br
button(type="submit", id="bt1", name="bt1") upload
方法2:ajax,post提交
input(type="file", id="file1", name="file1")
button(id="upload", name="upload") submit
javascript方法
$("#upload").click(function(){
var data = new FormData();
var files = $("#file1")[0].files;
if(files){
data.append("file", files[0]);
}
$.ajax({
type: 'post',
dataType: 'json',
data : data,
contentType: false,
processData: false,
success : function () {}
}
上传实现方法:form解析后的files是个对象,所以可以实现多文件上传
tool.uploadImg =function(req, res){
var fs = require('fs');
var formidable = require("formidable");
var form = new formidable.IncomingForm();
form.uploadDir = "./public/upload/temp/";//改变临时目录
form.parse(req, function(error, fields, files){
for(var key in files){
var file = files[key];
var fName = (new Date()).getTime();
switch (file.type){
case "image/jpeg":
fName = fName + ".jpg";
break;
case "image/png":
fName = fName + ".png";
break;
default :
fName =fName + ".png";
break;
}
console.log(file.size);
var uploadDir = "./public/upload/" + fName;
fs.rename(file.path, uploadDir, function(err) {
if (err) {
res.write(err+"\n");
res.end();
}
res.write("upload image:<br/>");
res.write("<img src='/imgShow?id=" + fName + "' />");
res.end();
});
}
});
};
显示上传后的文件
tool.imgShow = function(req, res){
var fs = require("fs");
var arg = tool.handleGetArg(req, res);
var uploadDir = "./public/upload/" + arg["id"];
fs.readFile(uploadDir, "binary", function(err, file){
if(err){
res.write(err+"\n");
res.end();
}else{
res.write(file, "binary");
res.end();
}
});
};
node.js+express+jade系列六:图片的上传的更多相关文章
- node.js+express+jade系列七:富文本编辑框的使用
下载nicEdit富文本编辑框, 把nicEdit.js文件放到public/javascripts/下 新建jade文件:代码如下 doctype htmlhtml head t ...
- node.js+express+jade系列五:ajax登录
本文通过jquery实现简单的无刷新登录 1:首先要在router中配置登录请求,因为登录需要传user和pwd考虑到安全需用post请求 { path:'/', meth ...
- node.js+express+jade系列四:jade嵌套的使用
jade是express自带的模板引擎 jade文件可以嵌套使用,include引用外部jade文件,extends引用jade模板 例如 有一个主jade文件layout.jade,引用top.ja ...
- node.js+express+jade系列三:404错误的配置
1:新建一个404.jade 2:在app.js后面配置如下代码 app.use(function(req, res){ res.render("404", {sta ...
- node.js+express+jade系列二:rotue路由的配置
页面的访问最常见的是get和post两种,无论是get请求还是post请求express自动判断执行app.get或app.post 1:app.get(名称,路径)或app["get&qu ...
- node.js+express+jade系列一:session的使用
此出只介绍内存session的配置好使用 1:打开app.js文件,添加下面红色内容,一定要注意位置在router前面 app.use(express.methodOverride()); sessi ...
- node.js系列(实例):原生node.js+formidable模块实现简单的文件上传
/** * 原生node.js结合formidable模块实现图片上传改名 * @Author:Ghost * @Date:2016/07/15 * @description: * 1.引入模块htt ...
- [译]简单得不得了的教程-一步一步用 NODE.JS, EXPRESS, JADE, MONGODB 搭建一个网站
原文: http://cwbuecheler.com/web/tutorials/2013/node-express-mongo/ 原文的源代码在此 太多的教程教你些一个Hello, World!了, ...
- node.js:《接口实现文件的上传和下载》
使用node.js写上传文件和下载文件的接口 上传接口: 开始写接口前,我们先安装一个上传文件的插件:npm install multer 安装成功在package.json或package-lock ...
随机推荐
- Java之StringBuffer和StringBuilder的差别与联系
2.StringBuilder,StringBuffer 字符串拼接时用这两个类,效率高.节约内存.假设用字符串 "+"号拼接 性能差.而且浪费空间,产生非常多垃圾 StringB ...
- IEnumerable, IEnumerator接口
IEnumerable接口 // Exposes the enumerator, which supports a simple iteration over a non-generic collec ...
- python selenium2示例 - 日志管理
logger继承图 前言 在自动化测试实践过程中,必不可少的就是进行日志管理,方便调试和生产问题追踪,python提供了logging模块来进行日志的管理.下面我们就logging模块的学习和使用进行 ...
- 多媒体开发之---h264 rtp打包
http://blog.csdn.net/newthinker_wei/article/details/8997440 http://blog.csdn.net/dengzikun/article/d ...
- java工程中当前目录在html中的设置
本地启动server的时候总是去读"/"的, 但到了服务器上,如果当前目录是服务器根目录下的一个文件夹,就应该设: <head> <meta charset=&q ...
- 转载 【iOS开发】网页JS与OC交互(JavaScriptCore) OC ----->JS
目标 本文介绍利用苹果在iOS7时发布的JavaScriptCore.framework框架进行js与OC的交互.我们想要达到的目标是: OC调用网页上的js方法 网页js调用APP中的OC方法 ...
- Mysql的学习研究
2017年5月16日11:26:17 从今天开始过一遍数据库的基础教程,加油!!!!! 看了之后对一些基础知识有了理解,加油... 笔记: 2017年5月16日11:35:46mysql的基础教程1. ...
- swoole创建TCP服务端和客户端
服务端: server.php <?php //创建Server对象,监听 127.0.0.1:9501端口 $serv = new swoole_server("127.0.0 ...
- spring工作原理理解
spring的工作原理 spring是作为一个容器存在的框架,可以加载spring web,spring mvc,spring orm,sprong aop,spring dao等框架和模块,其主要核 ...
- nginx学习之详细安装篇(二)
1. 选择稳定版还是主线版 主线版:包含最新的功能和bug修复,但该版本可能会含有一些属于实验性的模块,同时可能会有新的bug,所以如果只是做测试使用,可以使用主线版. 稳定版:不包含最新的功能,但修 ...