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 ...
随机推荐
- Jlink升级_官网
Jlink官网:https://www.segger.com/ 关于JLINK固件丢失或升级固件后提示Clone的解决办法 本人用的JLINK仿真器(某宝上买的),在使用新版KEIL时,提示要升级固件 ...
- phpexcel导入xlsx文件报错xlsx is not recognised as an OLE file 怎么办
最初的做法 代码如下 1 include 'classes/PHPExcel/IOFactory.php'; 2 $inputFileName = $target; 3 $objReader = n ...
- VMWare Workstation和VMWare vSphere(转)
VMware workstation一定是安装在window操作系统上的. VMware vSphere可以直接安装在x86机器上,使这台机器完全虚拟化. VMware vSphere主要是企业级用户 ...
- 嵌入式开发之davinci--- 8148/8168/8127 中的High-DefinitionVideo Processing Subsystem (HDVPSS)
High-DefinitionVideo Processing Subsystem (HDVPSS) 这一章介绍了高清视频处理子系统(HDVPSS). 2.1导论 2.1.1 简介 HDVPSS 使用 ...
- json格式转数组注意事项
今天遇到一个特别奇葩的问题,json格式明明是正确的,转数组时却就是出不来,后来才发现是文件的编码问题,文件的编码一定要是utf-8无BOM格式,这点一定要切记!切记! 如果想确认json是否正确:h ...
- Tkinter 控件详细介绍
Tkinter 控件详细介绍 1.Button 按钮.类似标签,但提供额外的功能,例如鼠标掠过.按下.释放以及键盘操作/事件 2.Canvas 画布.提供绘图功能(直线.椭圆.多边形.矩形) ;可以包 ...
- 高仿微信app (含有发红包,聊天,消息等)用到 Rxjava+Retrofit+MVP+Glide技术
https://github.com/GitLqr/LQRWeChat 技术很牛,可以看看
- 大数据学习系列(5)-- 局域网yum仓库搭建
https://www.cnblogs.com/nulige/p/6081192.html
- output value . Sigmoid neurons are similar to perceptrons, but modified so that small changes in their weights and bias cause only a small change in their output.
http://neuralnetworksanddeeplearning.com/chap1.html . Sigmoid neurons are similar to perceptrons, bu ...
- 原来还有cookie-free domain这么回事
cookie-free domain的解释:在请求下载静态小图片.静态小文件的时候,浏览器会把它当成普通请求一样,在request的header信息里附加cookie信息. 但实际上,99.99%的静 ...