文档章节

nodejs图片上传

c
 caiyezi
发布于 2016/11/08 20:24
字数 461
阅读 6
收藏 0
点赞 0
评论 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上传文件夹,上传的图片统一放在这里:

浏览器上传效果:

上传成功!

© 著作权归作者所有

共有 人打赏支持
c
粉丝 1
博文 108
码字总数 0
作品 0
西安
程序员
高性能图片服务器--NImg

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

freeman983 ⋅ 2013/12/07 ⋅ 0

Node.js+Web TWAIN,实现Web文档扫描和图像上传

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

yushulx ⋅ 2014/12/03 ⋅ 3

用electron开发Mark Down编辑器(一) ——功能简介

引子(废话) 从使用github托管个人静态博客开始,了解到了MarkDown,不得说这个标记行语言确实让人非常着迷。 我又是一个爱折腾的人,电脑系统经常换,每次重新搭建Hexo,感觉特别麻烦,每次...

newbiebt ⋅ 2016/11/25 ⋅ 5

node --npm

npm是node.js的包管理工具,它随nodeJs一起安装,它用于解决如下问题 1>允许用户从nmp服务器上下载别人编写的 三方包 到本地使用 2>允许用户从nmp服务器上下载并安装别人编写的 命令行程序 ...

求是科技 ⋅ 2016/07/08 ⋅ 0

Node.js的安装及简单使用

今天要搭建node.js,所以自己就总结了一下。该文章不是原创。 什么是node.js? 每一种解析器都是一个运行环境,不但允许js定义各种数据结构,进行各种计算,还允许js使用允许环境提供的内置对...

AFinalDream ⋅ 2017/04/06 ⋅ 0

Nodemailer 4.6.7 发布,Node.js 邮件发送组件

Nodemailer 4.6.7 已发布,该版本往 JSONTransport 中新增了一个 skipEncoding 的选项。详情 Nodemailer 是一个简单易用的 Node.JS 邮件发送模块(通过 SMTP,sendmail,或者 Amazon SES),...

王练 ⋅ 昨天 ⋅ 0

jQuery-File-Upload 使用文档(翻译)

最近要用到多图上传,准备使用这个插件,但是没搜到相关的文档,只有官方的文档,主要是以有道翻译和个人理解为主 可能会有一些问题,但是比看原文是方便一些. 使用文档 插件的基本信息 插件demo ...

employeeee ⋅ 05/14 ⋅ 0

Swagger UI教程 API 文档神器

目录 [TOC] 前言 在一些接口项目中,API的使用很频繁,所以一款API在线文档生成和测试工具非常有必要。而Swagger UI就是这么一款很实用的在线工具 本博客介绍如何在公司或者自己的电脑上按照...

Javahih ⋅ 2017/04/20 ⋅ 0

新手如何快速入门node.js

我当初学的时候,是在大大们的指导下开始学习的,用了3天搞定大大们给的任务。下面我就把这个经历分享出来,让大家借鉴一下。欢迎吐槽~~ 任务如下: 根据Node js 开发入门教程第五章的一个使...

rin9958 ⋅ 2016/03/28 ⋅ 0

Node.js之HTTP/2服务器推送

译者按: 盆友们,是时候拥抱新一代HTTP协议了! 译者:Fundebug 原文:HTTP/2 Server Push with Node.js Node.js 8.4.0已经开始支持HTTP/2,执行node命令时,加上选项就可以使用了。 在这篇...

Fundebug ⋅ 04/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot ⋅ 22分钟前 ⋅ 0

JAVA实现仿微信红包分配规则

最近过年发红包拜年成为一种新的潮流,作为程序猿对算法的好奇远远要大于对红包的好奇,这里介绍一种自己想到的一种随机红包分配策略,还请大家多多指教。 算法介绍 一、红包金额限制 对于微...

小致dad ⋅ 34分钟前 ⋅ 0

Python 数电表格格式化 xlutils xlwt xlrd的使用

需要安装 xlutils xlwt xlrd 格式化前 格式化后 代码 先copy读取的表格,然后按照一定的规则修改,将昵称中的学号提取出来替换昵称即可 from xlrd import open_workbookfrom xlutils.copy ...

阿豪boy ⋅ 今天 ⋅ 0

面试题:使用rand5()生成rand7()

前言 读研究生这3 年,思维与本科相比变化挺大的,这几年除了看论文、设计方案,更重要的是学会注重先思考、再实现,感觉更加成熟吧,不再像个小P孩,人年轻时总会心高气傲。有1 道面试题:给...

初雪之音 ⋅ 今天 ⋅ 0

Docker Toolbox Looks like something went wrong

Docker Toolbox 重新安装后提示错误:Looks like something went wrong in step ´Checking if machine default exists´ 控制面板-->程序与应用-->启用或关闭windows功能:找到Hyper-V,如果处......

随你疯 ⋅ 今天 ⋅ 0

Guacamole 远程桌面

本文将Apache的guacamole服务的部署和应用,http://guacamole.apache.org/doc/gug/ 该链接下有全部相关知识的英文文档,如果水平ok,可以去这里仔细查看。 一、简介 Apache Guacamole 是无客...

千里明月 ⋅ 今天 ⋅ 0

nagios 安装

Nagios简介:监控网络并排除网络故障的工具:nagios,Ntop,OpenVAS,OCS,OSSIM等开源监控工具。 可以实现对网络上的服务器进行全面的监控,包括服务(apache、mysql、ntp、ftp、disk、qmail和h...

寰宇01 ⋅ 今天 ⋅ 0

AngularDart注意事项

默认情况下创建Dart项目应出现以下列表: 有时会因为不知明的原因导致列表项缺失: 此时可以通过以下步骤解决: 1.创建项目涉及到的包:stagehand 2.执行pub global activate stagehand或pub...

scooplol ⋅ 今天 ⋅ 0

Java Web如何操作Cookie的添加修改和删除

创建Cookie对象 Cookie cookie = new Cookie("id", "1"); 修改Cookie值 cookie.setValue("2"); 设置Cookie有效期和删除Cookie cookie.setMaxAge(24*60*60); // Cookie有效时间 co......

二营长意大利炮 ⋅ 今天 ⋅ 0

【每天一个JQuery特效】淡入淡出显示或隐藏窗口

我是JQuery新手爱好者,有时间就练练代码,防止手生,争取每天一个JQuery练习,在这个博客记录下学习的笔记。 本特效主要采用fadeIn()和fadeOut()方法显示淡入淡出的显示效果显示或隐藏元...

Rhymo-Wu ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部