Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Arno Welzel Newsgroups: de.comp.lang.javascript Subject: Re: HTTP POST? Date: Mon, 3 Jun 2019 00:47:24 +0200 Lines: 64 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 8bit X-Trace: individual.net mhKYdmGm8GgFsoULPoHDBAo8dwlJDxsK7oqlvk9482PqYxEI0d Cancel-Lock: sha1:dVAXbUletApw1tjLPcJAq7UUIn4= Openpgp: preference=signencrypt In-Reply-To: Xref: csiph.com de.comp.lang.javascript:5070 Arno Welzel: > Ulli Horlacher: > > [...] >> Ich hab vor im Bereich 1-10 GB Daten zu verschicken. >> Das kann ich aber schlecht in einer Datenstruktur im RAM aufbauen, das >> muss in 64 kB Bloecken verschickt werden. >> >> Mein Perl-Client macht das so. Das will ich nun in Javascript haben, weil >> viele Leute mit Perl Code nichts anfangen koennen. >> >> In Javascript hab ich bisher nur rudimentaer was programmiert. >> Deshalb frag ich ja hier. > > > Das Problem ist, dass XMLHttpRequest.send() nicht mehrmals > hintereinander aufgerufen werden kann, sondern nur einmal pro Anfrage. > > Als Beispiel wie bei > > gezeigt: > > // Neue XHR-Anfrage fuer ein HTTP POST erzeugen > var xhr = new XMLHttpRequest(); > xhr.open("POST", "/server", true); > xhr.setRequestHeader("Content-Type", > "application/x-www-form-urlencoded"); > > // Handler fuer Statusmeldung nach Absenden der Anfrage > xhr.onreadystatechange = function() > { > if (this.readyState === XMLHttpRequest.DONE && this.status === 200) > { > // Anfrage wurde erfolgreich beendet > // hier entsprechende Behandlung ergaenzen > } > } > > // Anfrage mit Inhalt abschicken - das geht nur einmal nach open()! > xhr.send("foo=bar&lorem=ipsum"); > > // Alternativen: > // > // xhr.send(new Int8Array()); > // xhr.send(document); > > Wenn Du kontinuierlich einen größeren Datenstrom senden willst, wirst Du > um Websockets und eine entsprechende Serverseite dazu nicht herumkommen. Ergänzung: benutzt wohl eine Kombination mit Websockets für den Download und nacheinander ausgeführten HTTP POST-Requests für den Test der Uploads. Das ist auch schön zu sehen, wenn man z.B. Firefox benutzt und sich in der Entwicklerkonsole im "Network"-Tab ansieht, was da während eines Tests passiert. -- Arno Welzel https://arnowelzel.de