文档章节

nodejs图片上传

c
 caiyezi
发布于 2016/11/08 20:24
字数 461
阅读 10
收藏 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

共有 人打赏支持
上一篇: nodejs常用npm包
下一篇: log4js日志
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
使用 HTTP 上传 G 级的文件之 Node.js 版本

不管喜欢与否,javascript无处不在。 我们可以在客户端的前台应用中找到它,也可以在大量的框架、类库中找到它,而且可以在服务器端的后台应用中找到它。 近年来, Javascript越来越流行,这...

oschina
2014/11/02
7.9K
16
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
API 测试工具 Hitchhiker 0.6 发布,改进压力测试

Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持上传脚本定制请求,可以轻松部署到本地,和你的team成员一起协作测试Api。 详细介绍请...

不白兄
2017/12/19
1K
9

没有更多内容

加载失败,请刷新页面

加载更多

java框架学习日志-7(静态代理和JDK代理)

静态代理 我们平时去餐厅吃饭,不是直接告诉厨师做什么菜的,而是先告诉服务员点什么菜,然后由服务员传到给厨师,相当于服务员是厨师的代理,我们通过代理让厨师炒菜,这就是代理模式。代理...

白话
今天
20
0
Flink Window

1.Flink窗口 Window Assigner分配器。 窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。 一种经典的窗口分类可以分成: 翻...

满小茂
今天
15
0
my.ini

1

architect刘源源
今天
14
0
docker dns

There is a opensource application that solves this issue, it's called DNS Proxy Server It's a DNS server that solves containers hostnames, if could not found a hostname that mat......

kut
今天
15
0
寻找数学的广度——《这才是数学》读书笔记2700字

寻找数学的广度——《这才是数学》读书笔记2700字: 文|程哲。数学学习方式之广:国内外数学教育方面的专家,进行了很多种不同的数学学习方式尝试,如数学绘本、数学游戏、数学实验、数学步道...

原创小博客
今天
25
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部