使用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进程管理模块forever详解
Jun 01 NodeJs
基于promise.js实现nodejs的promises库
Jul 06 NodeJs
nodejs实现的一个简单聊天室功能分享
Dec 06 NodeJs
轻松创建nodejs服务器(6):作出响应
Dec 18 NodeJs
详解Nodejs基于mongoose模块的增删改查的操作
Dec 21 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
nodejs express配置自签名https服务器的方法
May 22 NodeJs
使用nodejs分离html文件里的js和css详解
Apr 12 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 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
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
DedeCMS dede_channeltype表字段注释
2010/04/07 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
PHP与Java对比学习日期时间函数
2016/07/03 PHP
PHP 微信扫码支付源代码(推荐)
2016/11/03 PHP
Javascript Tab 导航插件 (23个)
2009/06/11 Javascript
在jquery中处理带有命名空间的XML数据
2011/06/13 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
JS、CSS加载中的小问题探讨
2013/11/26 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
HTML5实现留言和回复页面样式
2015/07/22 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
2015/07/27 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
2016/01/28 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
Angular 如何使用第三方库的方法
2018/04/18 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
在微信小程序中保存网络图片
2019/02/12 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
基于python的列表list和集合set操作
2019/11/24 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
音乐教学案例
2014/01/30 职场文书
争论的故事教学反思
2014/02/06 职场文书
聚美优品广告词改编
2014/03/14 职场文书
机关保密工作承诺书
2015/05/04 职场文书
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers