使用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教程之入门
Nov 21 NodeJs
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
Dec 18 NodeJs
nodejs 的 session 简单使用
Jun 06 NodeJs
Nodejs进阶:核心模块net入门学习与实例讲解
Nov 21 NodeJs
nodejs基础应用
Feb 03 NodeJs
使用nodejs下载风景壁纸
Feb 05 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
nodejs用gulp管理前端文件方法
Jun 24 NodeJs
如何利用nodejs自动定时发送邮件提醒(超实用)
Dec 01 NodeJs
Nodejs 数组的队列以及forEach的应用详解
Feb 25 NodeJs
分享node.js实现简单登录注册的具体代码
Apr 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
两个强悍的php 图像处理类1
2009/06/15 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
PHP制作用户注册系统
2015/10/23 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
Apache站点配置SSL强制跳转443
2021/03/09 Servers
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
Vue2.0 UI框架ElementUI使用方法详解
2017/04/14 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
python实现简单的TCP代理服务器
2014/10/08 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
几款好用的python工具库(小结)
2020/10/20 Python
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
Pamela Love官网:纽约设计师Pamela Love的精美、时尚和穿孔珠宝
2020/10/19 全球购物
实习教师自我鉴定
2013/09/27 职场文书
教师自我鉴定
2013/12/13 职场文书
新员工欢迎词
2014/01/12 职场文书
写给爸爸的道歉信
2014/01/15 职场文书
七年级历史教学反思
2014/02/05 职场文书
马智宇结婚主持词
2014/04/01 职场文书
简单租房协议书
2014/10/21 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
2015年语文教学工作总结
2015/05/25 职场文书
运动员加油词
2015/07/18 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js