使用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的前后端分离的思考与实践(一)全栈式开发
Sep 26 NodeJs
Nodejs极简入门教程(三):进程
Oct 27 NodeJs
轻松创建nodejs服务器(5):事件处理程序
Dec 18 NodeJs
Nodejs为什么选择javascript为载体语言
Jan 13 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
详解NODEJS的http实现
Jan 04 NodeJs
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
Oct 17 NodeJs
详解NodeJS Https HSM双向认证实现
Mar 12 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
nodejs实现获取本地文件夹下图片信息功能示例
Jun 22 NodeJs
搭建一个nodejs脚手架的方法步骤
Jun 28 NodeJs
nodejs中的异步编程知识点详解
Jan 17 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
main.php
2006/12/09 PHP
PHP中ob_start函数的使用说明
2013/11/11 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
2014/02/21 Javascript
javascript 处理null及null值示例
2014/06/09 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
js实现表格筛选功能
2017/01/18 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
在React 组件中使用Echarts的示例代码
2017/11/08 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
Python中运行并行任务技巧
2015/02/26 Python
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
python使用KNN算法手写体识别
2018/02/01 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
Python的pygame安装教程详解
2020/02/10 Python
快速创建 HTML5 Canvas 电信网络拓扑图的示例代码
2018/03/21 HTML / CSS
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
写好求职信第一句话的技巧
2013/10/26 职场文书
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
国家助学贷款承诺书
2015/04/30 职场文书
公司2015年终工作总结
2015/05/26 职场文书
初中英语教学反思范文
2016/02/15 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python