使用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实现多人同时在线移动鼠标的小游戏分享
Dec 06 NodeJs
NodeJS学习笔记之FS文件模块
Jan 13 NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 NodeJs
Jquery通过ajax请求NodeJS返回json数据实例
Nov 08 NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 NodeJs
Nodejs 复制文件/文件夹的方法
Aug 24 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
Mar 12 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
nodejs制作小爬虫功能示例
Feb 24 NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 NodeJs
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
Aug 20 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 SEO优化之URL优化方法
2011/04/21 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
js nextSibling属性和previousSibling属性概述及使用注意
2013/02/16 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
提高JavaScript执行效率的23个实用技巧
2017/03/01 Javascript
jQuery Dom元素操作技巧
2018/02/04 jQuery
Vue 去除路径中的#号
2018/04/19 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
2019/05/15 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
python实现文件分组复制到不同目录的例子
2014/06/04 Python
跟老齐学Python之Import 模块
2014/10/13 Python
Django 导出 Excel 代码的实例详解
2017/08/11 Python
Python实现抢购IPhone手机
2018/02/07 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
对python的输出和输出格式详解
2018/12/08 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
浅析python redis的连接及相关操作
2019/11/07 Python
python定义类self用法实例解析
2020/01/22 Python
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
番木瓜健康和保健产品第一大制造商:Herbal Papaya
2017/04/25 全球购物
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
就业意向书范本
2015/05/11 职场文书
mysql自增长id用完了该怎么办
2022/02/12 MySQL
【海涛解说】pis亲自推荐,其实你从来不会玩NW
2022/04/01 DOTA
nginx七层负载均衡配置详解
2022/07/15 Servers