Ich benutze busboy , schreibe meine hochgeladene Datei in einen Puffer und führe eine Validierung durch (Breite, Höhe und Dateigröße) ). Ich kann nicht für das Leben von mir herausfinden, wie man den Strom abbricht / stoppt, sobald ich etwas mit dem Hochladen falsch finde.
Wenn ich zum Beispiel eine maximale Dateigröße von 500kb habe, die ich zulassen möchte, verfolge ich die Größe des Puffers beim Hochladen und möchte abbrechen, wenn die Größe über 500kb ist.
Hier ist eine vereinfachte Version meines Codes.
%Vor%Ich würde so etwas versuchen:
%Vor% Grundsätzlich habe ich ein neues Limit in der Konfiguration von Busboy hinzugefügt: fileSize: 500 * 1024
Und ich habe angefangen Limit Event zu hören:
%Vor%Die Antwort ist einfach.
%Vor% Der Kontext ist dies. Ich sehe im Busboy-Code, dass busboy als WritableStream implementiert ist und darunter verwendet Dicer
Modul zum Parsen, das auch als WritableStream implementiert ist. Der Ablauf ist wie folgt:
req
stream == & gt; busboy == & gt; dicer == & gt; dicer löst Ereignisse aus == & gt; busboy löst Ereignisse in Datei == & gt; Diese Ereignisse werden in Ihrem Code verbraucht.
Um diesen ganzen Codefluss zu stoppen, sollte das obige Unpipe ausreichen.
Ich konnte auf den zugrunde liegenden Dicer
Parser zugreifen, der eine ignore
-Methode hat, die das Hochladen der Datei im Wesentlichen stoppt.
So habe ich es gemacht: busboy._parser.parser._ignore()
Es scheint sehr hackisch, aber es funktioniert und macht genau das, was ich wollte.
Tags und Links javascript node.js express busboy