Heim Web-Frontend js-Tutorial So implementieren Sie den Upload mehrteiliger Formulardateien mithilfe der Knotenebene

So implementieren Sie den Upload mehrteiliger Formulardateien mithilfe der Knotenebene

Jun 14, 2018 am 11:48 AM
multipart node 文件上传 模拟 表单

Im Folgenden werde ich Ihnen ein Beispiel für das Hochladen von Dateien mithilfe der Node-Layer-Simulation zur Implementierung mehrteiliger Formulare vorstellen. Es hat einen guten Referenzwert und ich hoffe, dass es für alle hilfreich sein wird.

Manchmal besteht eine solche Anforderung, dass Nodejs als Webserver zum Hochladen von Dateien vom Browser auf den Back-End-Server verwendet wird Um die Daten ordnungsgemäß zu verarbeiten und dann im Backend zu veröffentlichen, müssen Sie den Datei-Upload auf der Knotenebene simulieren.

Laden Sie zunächst die Datei über den Browser hoch. Das PostData-Format sieht folgendermaßen aus:

Screenshot 2014 -11 -22 PM 9.18.45.png

Wie im Bild gezeigt, wird jeder Datensatz tatsächlich durch „-----WebkitFormBoundary....“ getrennt und schließlich verwendet. Dieses Trennzeichen endet , und dieses Trennzeichen ist vollständig anpassbar.

Jedes übermittelte Datenelement wird durch Content-Disposition beschrieben. Wenn Content-Type nicht angegeben ist, ist der Standardwert text/plain. Wenn es sich um eine hochgeladene Binärdatei handelt, geben Sie einfach deren Mime-Typ an.

Einfache Kapselung einer Methode zum Implementieren des Datei-Uploads auf der Knotenebene:

/**
 * 上传文件
 * @param files  经过formidable处理过的文件
 * @param req  httpRequest对象
 * @param postData 额外提交的数据
 */
function uploadFile(files, req, postData) {
 var boundaryKey = Math.random().toString(16);
 var endData = '\r\n----' + boundaryKey + '--';
 var filesLength = 0, content;

 // 初始数据,把post过来的数据都携带上去
 content = (function (obj) {
  var rslt = [];
  Object.keys(obj).forEach(function (key) {
   arr = ['\r\n----' + boundaryKey + '\r\n'];
   arr.push('Content-Disposition: form-data; name="' + key + '"\r\n\r\n');
   arr.push(obj[key]);
   rslt.push(arr.join(''));
  });
  return rslt.join('');
 })(postData);

 // 组装数据
 Object.keys(files).forEach(function (key) {
  if (!files.hasOwnProperty(key)) {
   delete files.key;
   return;
  }
  content += '\r\n----' + boundaryKey + '\r\n' +
   'Content-Type: application/octet-stream\r\n' +
   'Content-Disposition: form-data; name="' + key + '"; ' +
   'filename="' + files[key].name + '"; \r\n' +
   'Content-Transfer-Encoding: binary\r\n\r\n';
  files[key].contentBinary = new Buffer(content, 'utf-8');
  filesLength += files[key].contentBinary.length + fs.statSync(files[key].path).size;
 });

 req.setHeader('Content-Type', 'multipart/form-data; boundary=--' + boundaryKey);
 req.setHeader('Content-Length', filesLength + Buffer.byteLength(endData));

 // 执行上传
 var allFiles = Object.keys(files);
 var fileNum = allFiles.length;
 var uploadedCount = 0;
 allFiles.forEach(function (key) {
  req.write(files[key].contentBinary);
  var fileStream = fs.createReadStream(files[key].path, {bufferSize: 4 * 1024});
  fileStream.on('end', function () {
   // 上传成功一个文件之后,把临时文件删了
   fs.unlink(files[key].path);
   uploadedCount++;
   if (uploadedCount == fileNum) {
    // 如果已经是最后一个文件,那就正常结束
    req.end(endData);
   }
  });
  fileStream.pipe(req, {end: false});
 });
}
Nach dem Login kopieren

Das ist die Idee, der Code ist nicht kompliziert, Sie Möglicherweise ist besondere Aufmerksamkeit erforderlich. Bei der Antwortverarbeitung von http.request kann es sein, dass die Antwort.header zu diesem Zeitpunkt nicht direkt in einen String umgewandelt werden kann . Die allgemeine Idee ist:

rrree

Markieren Sie es, vielleicht brauchen Sie es einfach, wenn Sie vorbeikommen~~~

Das oben Gesagte habe ich für alle zusammengestellt alle in der Zukunft.

Verwandte Artikel:

Gzip-Komprimierungsprobleme in HTTP

So schreiben Sie ein Snake-Spiel mit JS-Code (ausführliches Tutorial)

So konvertieren Sie den Pfad in die Base64-Kodierung in Javascript

Das obige ist der detaillierte Inhalt vonSo implementieren Sie den Upload mehrteiliger Formulardateien mithilfe der Knotenebene. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So implementieren Sie einen Seitensprung nach der Übermittlung eines PHP-Formulars So implementieren Sie einen Seitensprung nach der Übermittlung eines PHP-Formulars Aug 12, 2023 am 11:30 AM

So implementieren Sie einen Seitensprung nach der PHP-Formularübermittlung [Einführung] In der Webentwicklung ist die Formularübermittlung eine häufige Funktionsanforderung. Nachdem der Benutzer das Formular ausgefüllt und auf die Schaltfläche „Senden“ geklickt hat, müssen die Formulardaten normalerweise zur Verarbeitung an den Server gesendet werden, und der Benutzer wird nach der Verarbeitung auf eine andere Seite weitergeleitet. In diesem Artikel wird erläutert, wie Sie mit PHP einen Seitensprung nach der Formularübermittlung implementieren. [Schritt 1: HTML-Formular] Zuerst müssen wir eine Seite mit einem Formular in einer HTML-Seite schreiben, damit Benutzer die Daten eingeben können, die übermittelt werden müssen.

Implementieren Sie das Hoch- und Herunterladen von Dateien in Workerman-Dokumenten Implementieren Sie das Hoch- und Herunterladen von Dateien in Workerman-Dokumenten Nov 08, 2023 pm 06:02 PM

Um das Hochladen und Herunterladen von Dateien in Workerman-Dokumenten zu implementieren, sind spezifische Codebeispiele erforderlich. Einführung: Workerman ist ein leistungsstarkes PHP-Framework für die asynchrone Netzwerkkommunikation, das einfach, effizient und benutzerfreundlich ist. In der tatsächlichen Entwicklung sind das Hochladen und Herunterladen von Dateien häufige Funktionsanforderungen. In diesem Artikel wird erläutert, wie das Workerman-Framework zum Implementieren des Hochladens und Herunterladens von Dateien verwendet wird, und es werden spezifische Codebeispiele aufgeführt. 1. Datei-Upload: Unter Datei-Upload versteht man die Übertragung von Dateien vom lokalen Computer auf den Server. Folgendes wird verwendet

So verwenden Sie Laravel zum Implementieren von Datei-Upload- und Download-Funktionen So verwenden Sie Laravel zum Implementieren von Datei-Upload- und Download-Funktionen Nov 02, 2023 pm 04:36 PM

So verwenden Sie Laravel zum Implementieren von Datei-Upload- und Download-Funktionen. Laravel ist ein beliebtes PHP-Web-Framework, das eine Fülle von Funktionen und Tools bietet, um die Entwicklung von Webanwendungen einfacher und effizienter zu machen. Eine der am häufigsten verwendeten Funktionen ist das Hoch- und Herunterladen von Dateien. In diesem Artikel wird erläutert, wie Sie mit Laravel Funktionen zum Hoch- und Herunterladen von Dateien implementieren, und es werden spezifische Codebeispiele bereitgestellt. Datei-Upload Unter Datei-Upload versteht man das Hochladen lokaler Dateien auf den Server zur Speicherung. In Laravel können wir den Datei-Upload nutzen

So lösen Sie die Ausnahme beim Hochladen von Java-Dateien (FileUploadException) So lösen Sie die Ausnahme beim Hochladen von Java-Dateien (FileUploadException) Aug 18, 2023 pm 12:11 PM

So lösen Sie eine Java-Datei-Upload-Ausnahme (FileUploadException). Ein Problem, das bei der Webentwicklung häufig auftritt, ist FileUploadException (Datei-Upload-Ausnahme). Dies kann aus verschiedenen Gründen auftreten, z. B. weil die Dateigröße den Grenzwert überschreitet, das Dateiformat nicht übereinstimmt oder eine falsche Serverkonfiguration vorliegt. Dieser Artikel beschreibt einige Möglichkeiten zur Lösung dieser Probleme und stellt entsprechende Codebeispiele bereit. Begrenzen Sie die Größe hochgeladener Dateien. Begrenzen Sie in den meisten Fällen die Dateigröße

Wie realisiert man mit JavaScript die automatische Eingabeaufforderungsfunktion für den Inhalt des Eingabefelds des Formulars? Wie realisiert man mit JavaScript die automatische Eingabeaufforderungsfunktion für den Inhalt des Eingabefelds des Formulars? Oct 20, 2023 pm 04:01 PM

Wie realisiert man mit JavaScript die automatische Eingabeaufforderungsfunktion für den Inhalt des Eingabefelds des Formulars? Einführung: Die automatische Eingabeaufforderungsfunktion für den Inhalt des Formulareingabefelds ist in Webanwendungen weit verbreitet. Sie kann Benutzern dabei helfen, schnell den richtigen Inhalt einzugeben. In diesem Artikel wird erläutert, wie Sie diese Funktion mithilfe von JavaScript erreichen, und es werden spezifische Codebeispiele bereitgestellt. Erstellen Sie die HTML-Struktur. Zuerst müssen wir eine HTML-Struktur erstellen, die das Eingabefeld und die Liste der automatischen Vorschläge enthält. Sie können den folgenden Code verwenden: <!DOCTYP

Wie verwende ich gRPC, um das Hochladen von Dateien in Golang zu implementieren? Wie verwende ich gRPC, um das Hochladen von Dateien in Golang zu implementieren? Jun 03, 2024 pm 04:54 PM

Wie implementiert man den Datei-Upload mit gRPC? Erstellen Sie unterstützende Servicedefinitionen, einschließlich Anforderungs- und Antwortnachrichten. Auf dem Client wird die hochzuladende Datei geöffnet, in Blöcke aufgeteilt und dann über einen gRPC-Stream an den Server gestreamt. Auf der Serverseite werden Dateiblöcke empfangen und in einer Datei gespeichert. Der Server sendet nach Abschluss des Datei-Uploads eine Antwort, um anzugeben, ob der Upload erfolgreich war.

Hochladen und Verarbeiten von Dateien in Laravel: Vom Benutzer hochgeladene Dateien verwalten Hochladen und Verarbeiten von Dateien in Laravel: Vom Benutzer hochgeladene Dateien verwalten Aug 13, 2023 pm 06:45 PM

Hochladen und Verarbeiten von Dateien in Laravel: Verwalten von vom Benutzer hochgeladenen Dateien Einführung: Das Hochladen von Dateien ist eine sehr häufige Funktionsanforderung in modernen Webanwendungen. Im Laravel-Framework wird das Hochladen und Verarbeiten von Dateien sehr einfach und effizient. In diesem Artikel wird erläutert, wie Sie von Benutzern hochgeladene Dateien in Laravel verwalten, einschließlich der Überprüfung, Speicherung, Verarbeitung und Anzeige von Datei-Uploads. 1. Datei-Upload Unter Datei-Upload versteht man das Hochladen von Dateien vom Client auf den Server. In Laravel sind Datei-Uploads sehr einfach zu handhaben. Erste,

PI -Knotenunterricht: Was ist ein PI -Knoten? Wie installiere und richte ich einen PI -Knoten ein? PI -Knotenunterricht: Was ist ein PI -Knoten? Wie installiere und richte ich einen PI -Knoten ein? Mar 05, 2025 pm 05:57 PM

Detaillierte Erläuterungs- und Installationshandbuch für Pinetwork -Knoten In diesem Artikel wird das Pinetwork -Ökosystem im Detail vorgestellt - PI -Knoten, eine Schlüsselrolle im Pinetwork -Ökosystem und vollständige Schritte für die Installation und Konfiguration. Nach dem Start des Pinetwork -Blockchain -Testnetzes sind PI -Knoten zu einem wichtigen Bestandteil vieler Pioniere geworden, die aktiv an den Tests teilnehmen und sich auf die bevorstehende Hauptnetzwerkveröffentlichung vorbereiten. Wenn Sie Pinetwork noch nicht kennen, wenden Sie sich bitte an was Picoin ist? Was ist der Preis für die Auflistung? PI -Nutzung, Bergbau und Sicherheitsanalyse. Was ist Pinetwork? Das Pinetwork -Projekt begann 2019 und besitzt seine exklusive Kryptowährung PI -Münze. Das Projekt zielt darauf ab, eine zu erstellen, an der jeder teilnehmen kann

See all articles