nodejs
来源:互联网 发布:复杂网络节点中心性 编辑:程序博客网 时间:2024/06/05 03:20
今天我要完整地说一下nodejs里面上传图片,包括缩放图片,裁剪图片。首先用到的工具是nodejs,用到的模块是multer,gm。还有一个就是图片工具imageMagick,这个工具很强大。你们可以去了解一下,它也可以作为java图片的裁剪,专门有jar包。
言归正传,我们先用nodejs搭载一个简单的网站。
取名为app.js 里面的内容为
var express = require('express');var app = express();var testController = require('./testController');app.post('/dataInpute', testController.dataInput);app.listen(3000);现在我们有个接受POST请求的API,接着我们做一个中间处理器testController.js
var multer = require('./controllers');var upload = multer.single('photo');exports.dataInput = function(req, res) {upload(req, res, function(err) {if (err) {return res.json({msg: "出错了"});}console.log(req);return res.json({msg: "上传成功"})});}再一个就是这个controllers模块,所以我们就在做一个controllers.js
var multer = require('multer');var gm = require('gm').subClass({imageMagick:true});var storage = multer.diskStorage({destination: function(req, file, cb) {cb(null, './public/uploads');gm('./public/images/' + filename).crop(req.body.width, req.body.height, req.body.x, req.body.y).write('./public/images/' + filename, function(err) { if (err) { console.log(err); } });},filename: function(req, file, cb) {var fileFormat = (file.originalname).split(".");filename = file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1];cb(null, filename);}});var upload = multer({storage: storage});module.exports = upload;这三个文件在同一个目录下,还有图片的存放位置,也设在这个目录,也就是在这个目录再建立public文件夹,再在public里面建立images文件夹。
运行app.js就可以进行post请求。
现在我们说一说首先你电脑或者服务器必须安装一个imageMagic的工具,这个工具主要用作裁剪,放缩图片用的。紧接这说multer如何上传图片,首先引入multer模块,multer里面有一个diskStorage方法,传一个json语句,json语句是这样的,我目前知道两个name,一个destination,一个是filename,第一个是文件的存放的路径,第二个是文件的命名。然后再把这个定义的方法放入multer方法中,也是json语句参数,最后导出,或者可以直接调用。
调用有两种方法,第一个是单图片multer.single('photo')传进来的name一定要与这个里面的photo是一样的。第二个是多图片multer.array('photo',12)差不多就这两种。
文件上传后,再来 说说上传的过程中我们应该在哪去修剪图片,本人认为,修剪图片的过程可是要考虑好,因为这之间涉及异步处理,我只列出了单图片,这个很好处理,只要你能提取图片名和这个图片名的路径就可以修改这个图片。
说一下修改图片的方法吧!
gm('./public/images/' + filename).crop(req.body.width, req.body.height, req.body.x, req.body.y).write('./public/images/' + filename, function(err) {
if (err) {
console.log(err);
}
});gm第一个参数是图片路径紧接着调用crop裁剪方法还有一个resize放缩方法,我讲一个裁剪方法,参数1,2是裁剪后图片的宽度和高度,参数3,4是裁剪时的起始横纵坐标。
这就是整个上传,裁剪图片的过程 。
- nodejs
- NodeJs
- nodejs
- nodejs
- nodejs
- nodejs
- nodejs
- nodejs
- nodejs
- nodejs
- NodeJs
- nodejs
- NodeJS
- nodejs
- nodejs
- nodejs
- NodeJS
- nodejs
- 线段树3(离散化,连续区间)
- access、trunk、vlan
- hibernate(转自 于亮)
- python编码转换,列表编码转换,编码检测,pycharm编写python乱码,文件中以unicode编码方式转成中文
- java初始化顺序
- nodejs
- vim编辑器
- java类初始化加载
- myeclipse中设置注释(包括作者,修改时间等)
- chartdirector绘制风量计算结果对比图及导出到word中的问题
- flex布局初级[转自阮一峰]
- <s:property>标签的escape属性
- 运用单例模式、建造者模式和策略模式实现异步加载Android联系人资料
- mysql优化要点