2016-07-13 34 views
2

Ich habe einen Code in der Steuerung wie unten:Wie beim Hochladen der Datei in node.js zu unterbrechen?

BASE.APP.post('/uploadFile/:request/:file', function(req, res, next) { 

    var url = req.usersession.webipAddress; 

    var path = 'uploads/' + req.params.file; 

    var formData = new BASE.FormData(); 
    formData.append('fileNameUnique', req.params.file); 
    formData.append('file', BASE.FS.createReadStream(path)); 
    // console.log(formData); 


    formData.submit(url + '/service/uploadFile/', function(err, response) { 
    // console.log(response.statusCode); 
    res.send(response.statusCode); 

    }); 
}); 

Ich möchte Datei-Upload zu unterbrechen, wenn Status == "Abbrechen", dass möglich ist?

+0

erhalten Sie den Status von der Anfrage? –

+0

Was meinst du mit wenn Status == "Abbrechen"? – Dario

+0

Was macht formData.submit (url + '/ service/uploadFile /'?? –

Antwort

0

Speichern kehrte der Wert von formData.submit ausgeben und als ein Griff request.abort auf zu rufen.

z.

BASE.APP.post('/uploadFile/:request/:file', function(req, res, next) {  

    var formData = new BASE.FormData(); 
    // ... 

    var formSubmitRequest = formData.submit(url + '/service/uploadFile/', function(err, response) { 
    res.send(response.statusCode); 
    }); 

    statusChanger.on('status-change', function(status) { 
    if (status === "cancel" && formSubmitRequest) { 
     formSubmitRequest.abort(); 
     res.send(524); 
    } 
    }); 

} 

Von https://github.com/form-data/form-data:

Für anspruchsvollere Anforderung Manipulationen einreichen() Methode gibt http.ClientRequest Objekt

Von https://nodejs.org/api/http.html#http_request_abort:

request.abort() #

Hinzugefügt in: v0.3.8

Markiert die Anforderung als abgebrochen. Wenn Sie dies aufrufen, werden verbleibende Daten in der Antwort gelöscht und der Socket zerstört.

1

Wenn Status == "Abbrechen" versuchen Sie dies:

req.pause() 
res.status = 400; 
res.end('Upload cancelled'); 
1

Ich weiß nicht viel über die Art und Weise Ihren Code Ihren Workflow arbeitet oder. Dies ist eine generische Lösung, die höchstwahrscheinlich funktionieren wird. Fügen Sie mehr Code in die Frage ein, wenn Sie eine spezifischere Lösung wünschen.

try { 
    if (status === 'cancel') { 
     throw new Error("Stopping file upload..."); 
    } 
} catch (e) { 
    res.end("the upload was cancelled because of error: " + e.toString()); 
}