使用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与Mysql的交互示例代码
Aug 18 NodeJs
Nodejs学习笔记之Global Objects全局对象
Jan 13 NodeJs
Windows系统中安装nodejs图文教程
Feb 28 NodeJs
Nodejs初级阶段之express
Nov 23 NodeJs
Windows 系统下设置Nodejs NPM全局路径
Apr 26 NodeJs
nodejs multer实现文件上传与下载
May 10 NodeJs
解决Nodejs全局安装模块后找不到命令的问题
May 15 NodeJs
Nodejs实现爬虫抓取数据实例解析
Jul 05 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 NodeJs
nodejs简单抓包工具使用详解
Aug 23 NodeJs
Nodejs + Websocket 指定发送及群聊的实现
Jan 09 NodeJs
ubuntu系统下使用pm2设置nodejs开机自启动的方法
May 12 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开发GUI
2006/10/09 PHP
图书管理程序(二)
2006/10/09 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
机器学习经典算法-logistic回归代码详解
2017/12/22 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
2019/08/29 Python
python 5个顶级异步框架推荐
2020/09/09 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
信息部岗位职责
2013/11/12 职场文书
教育学专业实习生的自我鉴定
2013/11/26 职场文书
《画家乡》教学反思
2014/04/22 职场文书
马丁路德金演讲稿
2014/05/19 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
义诊活动总结
2015/02/04 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书