在validation失败时立即停止file upload

我正在处理平均堆栈应用程序,并面临file upload的一个问题。

我想立即停止所有上传global.isProcessKilledvariables为true

我的代码如下

photo.js

 var express = require("express"); var app = express() var router = express.Router(); var multer = require("multer"); var mongoose = require("mongoose"); var fs = require("fs"); var jwt = require("jsonwebtoken"); var lib = require("../../../config/lib"); var storage = multer.diskStorage({ destination: function(req, file, cb) { cb(null, dirPath); }, filename: function(req, file, cb) { var datetimestamp = Date.now() + Math.floor(Math.random()); cb(null, datetimestamp + '.' + file.originalname.split('.')[file.originalname.split('.').length - 1].toLowerCase()); } }); var photoUpload = multer({ storage: storage, fileFilter : function (req, file, cb) { if(global.isProcessKilled){ //my custom validation flag // To reject this file pass `false`, like so: cb(null, false); }else{ // To accept the file pass `true`, like so: cb(null, true); } } }); router .route("/api/photo/photoUpload") .post( photoUpload.array("file"), function(req, res) { ..... ..... .... }); 

通过这个代码file upload工作正常,但我的下一个原始的API调用只发生在处理当前(前一个)文件。

更多信息:所有选定的文件大于1MB,小于10MB

  • 第1步:同时上传30个文件
  • 第2步:过程将开始
  • 第3步:假设global.isProcessKilledvariables将在10个文件中为true
  • 第四步:接下来所有的文件都不会因为过滤而被上传
  • 第5步:但前一个文件意味着第九个文件正在运行,我不知道如何停止它
  • 第六步:进程不会调用下一个callback,直到第9号文件不会被上传,大约需要2分钟
  • 第7步:由于这个原因API响应我也延迟

请帮我解决这个问题。