Ich lade eine Datei mit Request
hoch.
Woher weiß ich, wie viele Daten tatsächlich hochgeladen wurden? Gibt es ein Ereignis, das ich abonnieren kann, oder gibt es eine Eigenschaft von request
, die ich abfragen kann?
Wenn keine, was wäre der beste Ansatz zum Hochladen von Daten und wissen, wie viel hochgeladen wurde?
Ich brauchte einen Upload-Fortschritt für ein weiteres Projekt von mir.
Was ich herausgefunden habe ist, dass Sie die Eigenschaft request
von connection._bytesDispatched
abfragen können.
Zum Beispiel:
%Vor% Hinweis : Wenn Sie an r
weitergeleitet haben, verwenden Sie stattdessen poll r.req.connection.socket._bytesDispatched
.
Ich habe ein paar Stunden gebraucht, um etwas in den request
und node
Quellen zu finden, und habe schließlich eine gefunden unterschiedliche Herangehensweise, die sich für mich richtiger anfühlt.
Wir können uns auf drain
und bytesWritten
Eigenschaft:
Alternativ können Sie, wenn Sie mit dem Fortschritt von Datei-Bytes umgehen müssen, Stream data
verwenden:
Die Stream-Puffergröße ist 65536
bytes und die Lese- / Drain-Prozedur wird iterativ ausgeführt.
Das scheint mir mit node v4.5.0
und request v2.74.0
ziemlich gut zu funktionieren.
Jemand hat ein schönes Modul dafür erstellt, das im Produktionstapel für transloadit läuft (so ist es zuverlässig und gut gepflegt) . Sie können es hier finden:
Code sollte wie folgt aussehen:
%Vor%Sie können dann den Status mithilfe von diesem Video berichtet Ryan darüber, wie der Knoten gestartet wurde, um die beste Möglichkeit zu finden, einen Benutzer in Echtzeit zu informieren, über den Status des Datei-Uploads über das Web ... egal, ich schweife ab, aber das Video ist eine Wache wert, wenn Sie sich für Nodes Geschichte interessieren
Tags und Links coffeescript node.js