使用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的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
Sep 26 NodeJs
nodejs爬虫抓取数据乱码问题总结
Jul 03 NodeJs
Nodejs中的this详解
Mar 26 NodeJs
Nodejs实现短信验证码功能
Feb 09 NodeJs
nodejs服务搭建教程 nodejs访问本地站点文件
Apr 07 NodeJs
nodejs批量下载图片的实现方法
May 19 NodeJs
深入解析nodejs HTTP服务
Jul 25 NodeJs
详解使用PM2管理nodejs进程
Oct 24 NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 NodeJs
详解从NodeJS搭建中间层再谈前后端分离
Nov 13 NodeJs
nodejs利用readline提示输入内容实例代码
Jul 15 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
什么是短波收听SWL
2021/03/01 无线电
PHP之数组学习
2011/05/29 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
2013/06/26 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
深入理解js中的加载事件
2017/02/08 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
VUE脚手架具体使用方法
2019/05/20 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
python实现可逆简单的加密算法
2019/03/22 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
python enumerate内置函数用法总结
2020/01/07 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
python交互模式基础知识点学习
2020/06/18 Python
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
销售自荐信
2013/10/22 职场文书
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
大学生暑期实践感言
2014/02/26 职场文书
硕士生工作推荐信
2014/03/07 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
投标诚信承诺书
2014/05/26 职场文书
文员试用期转正自我鉴定
2014/09/14 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
2014年财政所工作总结
2014/11/22 职场文书
创业计划书之儿童理发店
2019/09/27 职场文书