文档章节

nodejs图片上传

c
 caiyezi
发布于 2016/11/08 20:24
字数 461
阅读 7
收藏 0

node中图片上传的中间键很多,比如formidable等,这里我们使用nodejs中的fs来实现文件上传处理:

1、安装中间键connect-multiparty

npm install connect-multiparty

通过connect-multiparty中间键我们可以实现req.files的功能,这样可以拿到上传文件的大小、类型等一系列参数,对其进行判断,从而达到限制上传的目的。

2、connect-multiparty的使用

var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
....
router.post('/upload', multipartMiddleware, function (req, res) {
  ....
}

在需要引入的js页面顶部引入上面代码,再在相应的路由中如上引入,然后通过req.files即可直接获取上传的文件参数。

3、完整实例:

index2.html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传实例</title>
</head>
<body>

<form enctype="multipart/form-data" action="/upload" method="post">
    <input type="file" name="uploadFile" id="upload" />
    <input type="submit" value="上传"/>
</form>

</body>
</html>

app.js配置:

var routes = require('./routes/index');
...
//设置post文件大小
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));

app.set('views', path.join(__dirname, 'views'));
var template = require('art-template');
template.config('base', '');
template.config('extname', '.html');
app.engine('.html', template.__express);
app.set('view engine', 'html');

... 
app.use(
'/', routes);

index.js文件:

/**
 * Created by chaozhou on 2015/11/9.
 */
var express = require('express');
var router = express.Router();
var tags = require('../modules/tag.js');
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
var fs = require("fs");

router.get('/', function(req, res, next) {
    res.render("index2");
});

router.post('/upload', multipartMiddleware,function(req, res) {
  var type = req.files.uploadFile.type;
  var size = req.files.uploadFile.size;
  var maxSize = 800 * 1024;     //800K
  type = type.split("/")[1];
  if (type != "jpeg" && type != "jpg" && type != "png") {
    res.send({"errMsg": "请上传png、jpg、jpeg格式照片"});
    return;
  } else if (size > maxSize) {
    res.send({"errMsg": "图片大小不要超过800K"});
    return;
  } else if (type == "jpeg" || type == "jpg" || type == "png" && size < maxSize) {
    fs.readFile(req.files.uploadFile.path, function (err, data) {
      if (err) {
        res.send({"errMsg": "'图片上传失败'"});
        return;
      }
      var base64str = new Buffer(data).toString('base64'); //图片转字节
      fs.writeFileSync("public/upload/" + "upload."+type, base64str, 'base64');  //写入本地
      res.send("<input type='image' src='/upload/upload."+type+"'/>");
    });
  }
});

module.exports = router;

在public目录下新建upload上传文件夹,上传的图片统一放在这里:

浏览器上传效果:

上传成功!

本文转载自:http://www.cnblogs.com/vipzhou/p/4948784.html

共有 人打赏支持
c
粉丝 1
博文 108
码字总数 0
作品 0
西安
程序员
nodejs+express整合kindEditor实现图片上传

kindEditor官网上中提供了ASP,ASP.NET,JSP相关的整合应用,http://kindeditor.net/docs/upload.html可以参照实现nodejs的整合,发现实用nodejs更简单 环境: unbuntu 14.10 nodejs 0.10.35 expr...

木子丰
2015/02/03
0
0
Node.js+Web TWAIN,实现Web文档扫描和图像上传

通过Dynamic Web TWAIN SDK和Node.js的组合,只需要几行代码就可以实现在浏览器中控制扫描仪,获取图像后上传到远程服务器。 原文:Document Imaging and Uploading With Dynamic Web TWAIN...

yushulx
2014/12/03
0
3
Node.js用fs.renameSync报cross-device link not per...

今天把 Manuel Kiessling 的【The Node Beginner Book】的中文版 【Node入门】(http://www.nodebeginner.org/index-zh-cn.html#javascript-and-you),的确是一本非常棒的教材,语言轻松幽默...

pureboys
2013/08/13
0
0
UEditor+nodejs+seaweedfs图片服务器搭建

参考链接:http://blog.coinidea.com/web%E5%BC%80%E5%8F%91/nodejs-1161.html 1. UEditor+nodejs图片上传UEditor是百度开源的富文本编辑器,功能比较强大。下载地址是:http://ueditor.baid...

CoinIdea
08/29
0
0
高性能图片服务器--NImg

NImg 是基于ZImg的nodejs实现。 NImg是基于node.js开发的高性能图片服务器,提供图片上传,实时裁剪。图片处理等接口调用。

freeman983
2013/12/07
5.7K
0

没有更多内容

加载失败,请刷新页面

加载更多

Java中的移位运算符

国庆给自己放了个小长期二十几天,回来继续更新专栏 上一篇文章我们说了Java里的二进制,知道了计算机是以0和1来处理数据的,在阅读源码的过程中,经常会看到这些符号<< ,>>,>>>,这些符号...

SuShine
21分钟前
2
0
linux版QQ

下载地址在这 http://yun.tzmm.com.cn/index.php/s/XRbfi6aOIjv5gwj Appimage包不用做什么别的处理,安装啥的都不需要。。找到文件所在目录,终端中修改一下文件的权限 chmod 777 QQ-2017112...

悲催的古灵武士
26分钟前
1
0
咕泡-MyBatis 实用篇作业

1. Mapper在spring管理下其实是单例,为什么可以是一个单例? 首先,mapper 内部不包含 成员字段,无状态单例是安全的 另外,一直存在不用每次调用都new 一个新实例 2. MyBatis在Spring集成下...

职业搬砖20年
29分钟前
2
0
MQTT协议的初浅认识之连接建立

MQTT百科 MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布...

亚林瓜子
46分钟前
1
0
OpenStack部署都有哪些方式

对于每一个刚接触到OpenStack的新人而言,安装无疑是最困难的,同时这也客观上提高了大家学习OpenStack云计算的技术门槛。想一想,自己3年前网上偶然接触到OpenStack时,一头茫然,手动搭建一...

tututu_jiang
46分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部