Node.js 获取文件上传进度 progress-stream

安装使用 progress-stream 即可

 

var fs = require('fs');
var express = require('express');
var multer = require('multer');
var progressStream = require('progress-stream');
var app = express();
var upload = multer({ dest: 'upload/' });
app.post('/upload', function (req, res, next) {
  // 创建progress stream的实例
  var progress = progressStream({length: '0'}); // 注意这里 length 设置为 '0'
  req.pipe(progress);
  progress.headers = req.headers;
  // 获取上传文件的真实长度(针对 multipart)
  progress.on('length', function nowIKnowMyLength (actualLength) {
    console.log('actualLength: %s', actualLength);
    progress.setLength(actualLength);
  });
  // 获取上传进度
  progress.on('progress', function (obj) {    
    console.log('progress: %s', obj.percentage);
  });
  // 实际上传文件
  upload.single('logo')(progress, res, next);
});
app.post('/upload', function (req, res, next) {
  res.send({ret_code: '0'});
});
app.get('/form', function(req, res, next){
  var form = fs.readFileSync('./form.html', {encoding: 'utf8'});
  res.send(form);
});
app.listen(3000);

 

来源:https://www.imooc.com/article/269351

真诚赞赏,手留余香
赞赏
随机推荐
网游类似魔兽世界的服务器维护都是在干嘛?
2018.1.26 Night King
MySQL从一个表往另一个表中导出数据,并处理时间格式
什么是加载占位图(Skeleton Screen Loading)
CSS实现图片模糊
Windows无法删除文件夹 系统找不到指定文件
体块透视
Node.js 的图片处理模块 images 跨平台图像编解码库
JavaScript从数组中删除指定值元素的方法
EJS 中文文档