使用nodejs+express实现简单的文件上传功能


Posted in NodeJs onDecember 27, 2017

1.建立express项目

express -e nodejs-uploadfile

2.下载multer中间件

npm i multer or yarn multer

3.在routes/index.js中引用multer,由于还要使用到文件操作,还要引用fs模块,并指定文件上传目录

const multer = require('multer');
const fs = require('fs');
const UPLOAD_PATH = './uploads'

单文件上传: index.html中文件如下( form文件的类型必须为 enctype="multipart/form-data" ),

<form action="/upload" method="post" enctype="multipart/form-data">
 <input name="fileUpload" type="file" />
 <img src="" alt="">
 <button type="submit">上传</button>
</form>

在routes/index.js里面添加upload路由用来处理上传文件的操作

router.post('/upload', upload.single('fileUpload'), function (req, res, next) {
 const { file } = req;
 fs.readFile(file.path, function(err, data) {
 fs.writeFile(`${UPLOAD_PATH}/${file.originalname}`, data, function (err) {
  if (err) res.json({ err })
  res.json({
  msg: '上传成功'
  });
 });
 })
})

如果上传的文件是图片的话,还可以使用FileReader对象实现图片预览

(function($){
 $('input').on('change', function(event) {
 var files = event.target.files,
  reader = new FileReader();
 if(files && files[0]){
  reader.onload = function (ev) {
   $('img').attr('src', ev.target.result);
  }
  reader.readAsDataURL(files[0]);
 }
 })
}(jQuery))

多文件上传: 多文件上传的原理和单文件上传的原理一样,代码如下:

router.post('/upload', upload.array('fileUpload'), function (req, res, next) {
 const files = req.files;
 const response = [];
 const result = new Promise((resolve, reject) => {
 files.map((v) => {
  fs.readFile(v.path, function(err, data) {
  fs.writeFile(`${UPLOAD_PATH}/${v.originalname}`, data, function(err, data) {
   const result = {
   file: v,
   }
   if (err) reject(err);
   resolve('成功');
  })
  })
 })
 })
 result.then(r => {
 res.json({
  msg: '上传成功',
 })
 }).catch(err => {
 res.json({ err })
 });
})

相关代码在 github.com/bWhirring/n…

总结

以上所述是小编给大家介绍的使用nodejs+express实现简单的文件上传功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

NodeJs 相关文章推荐
NodeJS学习笔记之网络编程
Aug 03 NodeJs
nodejs中操作mysql数据库示例
Dec 20 NodeJs
nodejs基础应用
Feb 03 NodeJs
nodejs中全局变量的实例解析
Mar 07 NodeJs
nodejs中使用HTTP分块响应和定时器示例代码
Mar 19 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
nodejs结合Socket.IO实现的即时通讯功能详解
Jan 12 NodeJs
关于Mac下安装nodejs、npm和cnpm的教程
Apr 11 NodeJs
nodejs更改项目端口号的方法
May 13 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 NodeJs
详解nodejs 配置文件处理方案
Jan 02 NodeJs
nodejs微信开发之自动回复的实现
Mar 17 NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 #NodeJs
nodejs实现简单的gulp打包
Dec 21 #NodeJs
nodejs调取微信收货地址的方法
Dec 20 #NodeJs
基于nodejs实现微信支付功能
Dec 20 #NodeJs
nodeJS微信分享
Dec 20 #NodeJs
NodeJS爬虫实例之糗事百科
Dec 14 #NodeJs
nodejs实现爬取网站图片功能
Dec 14 #NodeJs
You might like
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
JQuery实现自定义对话框的代码
2008/06/15 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
js实现拖拽效果
2015/02/12 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
js实现碰撞检测
2021/01/29 Javascript
python基础教程之缩进介绍
2014/08/29 Python
python 2.6.6升级到python 2.7.x版本的方法
2016/10/09 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
在Python运行时动态查看进程内部信息的方法
2019/02/22 Python
浅析matlab中imadjust函数
2020/02/27 Python
性能服装:HYLETE
2018/08/14 全球购物
法国体育用品商店:GO Sport
2019/10/23 全球购物
海量信息软件测试笔试题
2015/08/08 面试题
外语学院毕业生的自我鉴定
2013/11/28 职场文书
董事长助理岗位职责
2014/02/18 职场文书
出纳员岗位职责风险
2014/03/06 职场文书
三年级评语大全
2014/04/23 职场文书
促销活动总结报告
2014/04/26 职场文书
奥巴马经典演讲稿
2014/09/13 职场文书
琅琊山导游词
2015/02/05 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
暑假打工感想
2015/08/07 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
golang特有程序结构入门教程
2021/06/02 Python
Python实现的扫码工具居然这么好用!
2021/06/07 Python