使用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服务器(3):代码模块化
Dec 18 NodeJs
轻松创建nodejs服务器(4):路由
Dec 18 NodeJs
深入浅析NodeJs并发异步的回调处理
Dec 21 NodeJs
angular2+nodejs实现图片上传功能
Mar 27 NodeJs
详解Nodejs之静态资源处理
Jun 05 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
nodejs结合socket.io实现websocket通信功能的方法
Jan 12 NodeJs
基于nodejs的微信JS-SDK简单应用实现
May 21 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 NodeJs
Nodejs libuv运行原理详解
Aug 21 NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 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 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
别了 JavaScript中的isXX系列
2012/08/01 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
Javascript中字符串和数字的操作方法整理
2017/01/22 Javascript
react路由配置方式详解
2017/08/07 Javascript
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
2017/09/23 jQuery
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
2019/07/29 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
[01:09:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第一场 6.2
2018/06/04 DOTA
Python实现数据库编程方法详解
2015/06/09 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
python如何制作缩略图
2019/04/30 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
linux面试题参考答案(7)
2014/07/24 面试题
外包公司软件测试工程师
2014/11/01 面试题
三下乡活动方案
2014/01/31 职场文书
金融学专业大学生职业生涯规划
2014/03/07 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
乡镇爱国卫生月活动总结
2014/06/25 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
初中语文教学反思范文
2016/03/03 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android