使用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爬虫抓取数据乱码问题总结
Jul 03 NodeJs
nodejs个人博客开发第五步 分配数据
Apr 12 NodeJs
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
Jul 05 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
详解nodejs通过代理(proxy)发送http请求(request)
Sep 22 NodeJs
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
Sep 29 NodeJs
nodejs调取微信收货地址的方法
Dec 20 NodeJs
nodejs实现的简单web服务器功能示例
Mar 15 NodeJs
NodeJS安装图文教程
Apr 19 NodeJs
nodejs中用npm初始化来创建package.json的实例讲解
Oct 10 NodeJs
nodejs检测因特网是否断开的解决方案
Apr 17 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 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
使用网络地址转换实现多服务器负载均衡
2006/10/09 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
php图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
PDO::commit讲解
2019/01/27 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
ext jquery 简单比较
2010/04/07 Javascript
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
深究AngularJS中$sce的使用
2017/06/12 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
Python使用Django实现博客系统完整版
2020/09/29 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
Python和Sublime整合过程图示
2019/12/25 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
英国最大的经认证的有机超市:Planet Organic
2018/02/02 全球购物
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
采购主管岗位职责
2014/02/01 职场文书
投资意向书范本
2014/04/01 职场文书
小学家长学校培训材料
2014/08/24 职场文书
党员群众路线对照检查材料
2014/08/31 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
英语教师个人工作总结
2015/02/09 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书