使用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事件的监听与触发的理解分析
Feb 12 NodeJs
nodeJS代码实现计算交社保是否合适
Mar 09 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
浅谈NodeJs之数据库异常处理
Oct 25 NodeJs
nodeJS微信分享
Dec 20 NodeJs
解决nodejs的npm命令无反应的问题
May 17 NodeJs
nodeJS进程管理器pm2的使用
Jan 09 NodeJs
NodeJs之word文件生成与解析的实现代码
Apr 01 NodeJs
Nodejs异步流程框架async的方法
Jun 07 NodeJs
typescript nodejs 依赖注入实现方法代码详解
Jul 21 NodeJs
在NodeJs中使用node-schedule增加定时器任务的方法
Jun 08 NodeJs
NodeJS配置CORS实现过程详解
Dec 02 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
php_pdo 预处理语句详解
2016/11/21 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
PHP安装memcache扩展的步骤讲解
2019/02/14 PHP
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
javascript生成随机数方法汇总
2015/11/12 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
vue如何截取字符串
2019/05/06 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
[37:45]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS Orenda
2014/05/22 DOTA
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
[01:13]这,就是刀塔
2014/07/16 DOTA
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python datetime时间格式化去掉前导0
2014/07/31 Python
Django1.11自带分页器paginator的使用方法
2019/10/31 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
应聘美工求职信
2013/11/07 职场文书
食品质量与安全专业毕业生求职信
2014/08/11 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
小学班级管理心得体会
2016/01/07 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
2021/10/05 Javascript