


NodeJS-Bereitstellung komprimiertes Paket hochladen
In der modernen Webentwicklung ist die Verwendung von Node.js zum Erstellen von Back-End-Anwendungen zu einem Trend geworden. Da Anwendungen ständig aktualisiert werden, müssen wir häufig neue aktualisierte Versionen auf dem Server bereitstellen. Daher wird in diesem Artikel erläutert, wie Sie mit Node.js komprimierte Pakete bereitstellen und hochladen, um schnelle, einfache und effiziente Anwendungsaktualisierungen zu erzielen.
- Komprimierte Dateien
Vor dem Hochladen müssen wir die Dateien, die bereitgestellt werden müssen, in eine Zip- oder tar.gz-Datei komprimieren. Es ist sehr einfach, Node.js zum Abschließen der Dateikomprimierung zu verwenden. Sie müssen lediglich die integrierten Module „zlib“ und „fs“ von Node.js verwenden, um eine einfache Dateikomprimierung zu erreichen. Das Folgende ist ein einfacher Komprimierungscode:
const fs = require('fs'); const zlib = require('zlib'); const srcFileName = 'srcFile.txt'; const destFileName = 'srcFile.txt.gz'; // 创建压缩流 const gzip = zlib.createGzip(); const inp = fs.createReadStream(srcFileName); const out = fs.createWriteStream(destFileName); inp.pipe(gzip).pipe(out); console.log('文件压缩成功!');
Wir können den obigen Code für die zukünftige Verwendung in eine Funktion kapseln:
const fs = require('fs'); const zlib = require('zlib'); function compress(file) { const gzip = zlib.createGzip(); const src = fs.createReadStream(file); const dest = fs.createWriteStream(file + '.gz'); src.pipe(gzip).pipe(dest); console.log(`文件 ${file} 压缩成功!`); }
Die „Datei“ ist der Name der Datei, die komprimiert werden muss. Dies kann ein relativer Pfad oder sein ein absoluter Weg.
- Dateien hochladen
Nach Abschluss der Dateikomprimierung müssen wir die komprimierte Datei auf den Server hochladen. Hier können wir Module von Drittanbietern verwenden, um die Funktion zum Hochladen von Dateien zu implementieren. Ein häufig verwendetes Modul ist „formidable“, ein effizientes Formularanalysemodul, das uns bei der Abwicklung von Datei-Upload-Vorgängen helfen kann.
Zuerst müssen wir „formidable“ installieren:
npm install formidable --save
Dann können wir den folgenden Code verwenden, um die Funktion zum Hochladen von Dateien zu implementieren:
const http = require('http'); const formidable = require('formidable'); const fs = require('fs'); http.createServer((req, res) => { if (req.url === '/upload' && req.method.toLowerCase() === 'post') { const form = formidable({ multiples: true }); form.parse(req, (err, fields, files) => { const oldPath = files.file.path; const newPath = __dirname + '/uploads/' + files.file.name; fs.rename(oldPath, newPath, (err) => { if (err) throw err; res.writeHead(200, { 'content-type': 'text/plain' }); res.end('文件上传成功!'); }); }); return; } }).listen(8080); console.log('服务器启动成功!');
Wie im obigen Code gezeigt, erstellen wir einen HTTP-Server mit dem Überwachungsport 8080 . Wenn der Client eine POST-Anfrage mit der URL „/upload“ anfordert, verwenden wir „formidable“, um die Dateidaten in der POST-Anfrage zu analysieren. Nach dem Parsen können wir relevante Informationen über die hochgeladene Datei erhalten, einschließlich Dateiname, Dateigröße, Dateityp usw. Anschließend verschieben wir die Dateien vom temporären Pfad in das Upload-Verzeichnis.
Es ist zu beachten, dass Sie bei Verwendung von „formidable“ Parsing „multiples“ auf „true“ setzen müssen, um das Hochladen mehrerer Dateien zu unterstützen. Wir können auch die Größe der hochgeladenen Datei, den Speicherpfad usw. steuern, indem wir andere Parameter festlegen.
- Extrahieren Sie die Datei
Nachdem der Server die komprimierte Datei empfangen hat, müssen wir die Datei dekomprimieren, bevor wir den Aktualisierungsvorgang starten können. Das Dekomprimieren von Dateien mit Node.js ist ebenfalls sehr einfach. Verwenden Sie einfach die integrierten Module „zlib“ und „fs“ von Node.js. Das Folgende ist eine einfache Dekomprimierungscode-Implementierung:
const fs = require('fs'); const zlib = require('zlib'); const srcFileName = 'srcFile.txt.gz'; const destFileName = 'srcFile.txt'; // 创建解压流 const gunzip = zlib.createGunzip(); const inp = fs.createReadStream(srcFileName); const out = fs.createWriteStream(destFileName); inp.pipe(gunzip).pipe(out); console.log('文件解压成功!');
Genau wie bei der Komprimierungsfunktion können wir auch den obigen Code für die zukünftige Verwendung in eine Funktion kapseln:
const fs = require('fs'); const zlib = require('zlib'); function uncompress(file) { const gunzip = zlib.createGunzip(); const src = fs.createReadStream(file); const dest = fs.createWriteStream(file.replace('.gz', '')); src.pipe(gunzip).pipe(dest); console.log(`文件 ${file} 解压成功!`); }
Die „Datei“ ist der Name der komprimierten Datei, die komprimiert werden muss dekomprimiert. Handelt es sich um einen relativen oder einen absoluten Pfad?
- Update bereitstellen
Nach Abschluss der Dekomprimierung können wir die Datei in das Verzeichnis verschieben, in dem die Anwendung ausgeführt wird, die ursprüngliche Anwendungsdatei überschreiben und die Bereitstellungs- und Aktualisierungsarbeiten sind einmal abgeschlossen. Das Folgende ist eine einfache Code-Implementierung:
const fs = require('fs'); const path = require('path'); const appDir = 'app'; function deploy(file) { const fileName = path.basename(file); const destPath = path.join(appDir, fileName); fs.copyFile(file, destPath, (err) => { if (err) throw err; console.log(`文件 ${fileName} 部署成功!`); }); }
Die „Datei“ ist der dekomprimierte Dateiname, der bereitgestellt werden muss. Dies kann ein relativer oder absoluter Pfad sein. appDir
ist das Verzeichnis, in dem unsere Anwendung ausgeführt wird.
- Vollständiger Code
Abschließend haben wir den obigen Code mit vollständigen Funktionen integriert:
const http = require('http'); const formidable = require('formidable'); const fs = require('fs'); const path = require('path'); const zlib = require('zlib'); const appDir = 'app'; http.createServer((req, res) => { if (req.url === '/upload' && req.method.toLowerCase() === 'post') { const form = formidable({ multiples: true }); form.parse(req, (err, fields, files) => { const oldPath = files.file.path; const newPath = __dirname + '/' + files.file.name; fs.rename(oldPath, newPath, (err) => { if (err) throw err; console.log('文件上传成功!'); uncompress(newPath); }); }); return; } res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(` <form action="/upload" method="POST" enctype="multipart/form-data"> <input type="file" name="file" multiple> <button type="submit">上传</button> </form> `); }).listen(8080); console.log('服务器启动成功!'); function compress(file) { const gzip = zlib.createGzip(); const src = fs.createReadStream(file); const dest = fs.createWriteStream(file + '.gz'); src.pipe(gzip).pipe(dest); console.log(`文件 ${file} 压缩成功!`); } function uncompress(file) { const gunzip = zlib.createGunzip(); const src = fs.createReadStream(file); const dest = fs.createWriteStream(file.replace('.gz', '')); src.pipe(gunzip).pipe(dest); console.log(`文件 ${file} 解压成功!`); deploy(file.replace('.gz', '')); } function deploy(file) { const fileName = path.basename(file); const dest = path.join(appDir, fileName); fs.copyFile(file, dest, (err) => { if (err) throw err; console.log(`文件 ${fileName} 部署成功!`); }); }
Der obige Code implementiert einfache Datei-Upload-, Komprimierungs-, Dekomprimierungs- und Bereitstellungsfunktionen, die an Ihre eigenen Bedürfnisse angepasst werden können.
Das obige ist der detaillierte Inhalt vonNodeJS-Bereitstellung komprimiertes Paket hochladen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

React kombiniert JSX und HTML, um die Benutzererfahrung zu verbessern. 1) JSX bettet HTML ein, um die Entwicklung intuitiver zu gestalten. 2) Der virtuelle DOM -Mechanismus optimiert die Leistung und reduziert den DOM -Betrieb. 3) Komponentenbasierte Verwaltungs-Benutzeroberfläche zur Verbesserung der Wartbarkeit. 4) Staatsmanagement und Ereignisverarbeitung verbessern die Interaktivität.

Das Reaktivitätssystem von VUE 2 kämpft mit der Einstellung der Direktarray -Index, der Längenänderung und der Addition/Löschung der Objekteigenschaften. Entwickler können die Mutationsmethoden von VUE und VUE.SET () verwenden, um die Reaktivität sicherzustellen.

React -Komponenten können durch Funktionen oder Klassen definiert werden, wobei die UI -Logik eingefasst und Eingabedaten durch Props akzeptiert werden. 1) Komponenten definieren: Verwenden Sie Funktionen oder Klassen, um Reaktierungselemente zurückzugeben. 2) Rendering -Komponente: React -Aufrufe rendern Methode oder führt die Funktionskomponente aus. 3) Multiplexing -Komponenten: Daten durch Requisiten übergeben, um eine komplexe Benutzeroberfläche zu erstellen. Mit dem Lebenszyklusansatz von Komponenten kann die Logik in verschiedenen Phasen ausgeführt werden, wodurch die Entwicklungseffizienz und die Wartbarkeit des Codes verbessert werden.

React ist das bevorzugte Werkzeug zum Aufbau interaktiver Front-End-Erlebnisse. 1) React vereinfacht die UI -Entwicklung durch Komponentierungen und virtuelles DOM. 2) Komponenten werden in Funktionskomponenten und Klassenkomponenten unterteilt. Funktionskomponenten sind einfacher und Klassenkomponenten bieten mehr Lebenszyklusmethoden. 3) Das Arbeitsprinzip von React beruht auf virtuellen DOM- und Versöhnungsalgorithmus, um die Leistung zu verbessern. 4) State Management verwendet Usestate oder diese. 5) Die grundlegende Verwendung umfasst das Erstellen von Komponenten und das Verwalten von Status, und die erweiterte Verwendung umfasst benutzerdefinierte Haken und Leistungsoptimierung. 6) Zu den häufigen Fehlern gehören unsachgemäße Statusaktualisierungen und Leistungsprobleme, Debugging -Fähigkeiten umfassen die Verwendung von ReactDevtools und exzellent

TypeScript verbessert die Reaktionsentwicklung, indem sie die Sicherheit Typ, Verbesserung der Codequalität und eine bessere Unterstützung für eine IDE bietet, wodurch Fehler verringert und die Wartbarkeit verbessert werden.

In dem Artikel wird der Usereducer für komplexes Zustandsmanagement in React erläutert, wobei die Vorteile gegenüber Usestate detailliert beschrieben werden und wie sie in die Nutzung für Nebenwirkungen integriert werden können.

Funktionelle Komponenten in vue.js sind zustandslos, leicht und fehlen Lebenszyklushaken, die ideal für die Rendern von reinen Daten und zur Optimierung der Leistung. Sie unterscheiden

React ist ein Front-End-Framework zum Erstellen von Benutzeroberflächen. Ein Back-End-Framework wird verwendet, um serverseitige Anwendungen zu erstellen. React bietet komponentierte und effiziente UI -Updates, und das Backend -Framework bietet eine vollständige Backend -Service -Lösung. Bei der Auswahl eines Technologie -Stacks sollten Projektanforderungen, Teamfähigkeiten und Skalierbarkeit berücksichtigt werden.
