在验证失败时立即停止文件上传

时间:2017-11-08 14:23:32

标签: javascript angularjs node.js multer ng-file-upload

我正在研究平均堆栈应用程序,我遇到了文件上传的一个问题。

我想在global.isProcessKilled变量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) {
            .....
            .....
            ....
        });

通过此代码文件上传工作正常,但我的下一个原始API调用仅在处理当前(上一个)文件后发生。

更多信息: 所有选定的文件都超过1mb且小于10mb

  • 第1步:同时上传30个文件
  • 第2步:流程将开始
  • 第3步:假设global.isProcessKilled变量为true 10个文件
  • 第4步:接下来因为过滤器
  • ,所有文件都不会处理上传
  • 步骤5:但上一个文件表示第9个文件正在运行,我不知道如何阻止它
  • 第6步:该流程不会调用下一个回调,直到第9号文件无法上传,大约需要2分钟
  • 第7步:因此api响应我也迟迟

请帮我解决此问题。

0 个答案:

没有答案