Nodejs implementiert den Datei-Upload-Namen
Größe und Größenbeschränkungen
Mit der kontinuierlichen Entwicklung des Internets ist das Hochladen von Dateien zu einer der notwendigen Funktionen vieler Websites geworden. In Node.js können Datei-Uploads mithilfe verschiedener Module und Technologien umgesetzt werden. Im Folgenden stellen wir eine Datei-Upload-Methode vor, die auf dem Express-Framework basiert, und diskutieren, wie Größen- und Namensbeschränkungen für Datei-Uploads implementiert werden.
- Abhängige Module installieren
In diesem Artikel verwenden wir das Express-Framework als Webserver und das Multer-Modul für die Verarbeitung von Datei-Uploads. Installieren wir zuerst diese abhängigen Module:
npm install express multer --save
- Grundlegende Verwendung des Datei-Uploads
Das Folgende ist ein Beispiel für eine grundlegende Datei-Upload-Route:
const express = require('express'); const multer = require('multer'); const app = express(); const upload = multer({ dest: 'uploads/' }); app.post('/upload', upload.single('file'), function(req, res) { res.send('文件上传成功!'); }); app.listen(3000, function() { console.log('服务器已启动,端口号:3000'); });
Im obigen Code verwenden wir Multers upload.single </ code>-Methode zum Verarbeiten des Datei-Uploads verwenden, muss das Namensattribut einer einzelnen Datei <code>file
sein. Nachdem der Upload erfolgreich war, gibt der Server eine Zeichenfolge zurück. upload.single
方法来处理文件上传,单个文件的name属性必须是file
。上传成功后,服务器返回一段字符串。
- 文件大小限制
现在我们来实现文件大小的限制,我们可以通过在multer的配置中指定limits
属性来实现。示例如下:
const upload = multer({ dest: 'uploads/', limits: { fileSize: 1024 * 1024 //限制1M } });
在上述示例中,我们设置上传文件的最大大小为1M(单位是字节)。如果上传的文件大小超过了这个值,multer会自动返回一个错误。我们可以在路由的回调函数中通过判断req.file是否存在来检查错误。示例如下:
app.post('/upload', upload.single('file'), function(req, res) { // 文件大小超出限制 if (req.file.size > 1024 * 1024) { return res.status(400).send('文件大小不能超过1M'); } res.send('文件上传成功!'); });
在上述示例中,如果文件大小超出了1M,则返回400错误码和一段错误消息。
- 文件名称限制
如果我们想实现对上传的文件名进行限制,我们可以使用multer的fileFilter
方法来实现。在fileFilter
方法中,我们可以对上传的文件名进行判断,如果满足条件,则继续上传,否则抛出错误。示例如下:
const storage = multer.diskStorage({ destination: function(req, file, cb) { cb(null, './uploads') }, filename: function(req, file, cb) { // 只允许上传后缀名为jpg, jpeg和png的文件 if (!/.(jpg|jpeg|png)$/.test(file.originalname)) { return cb(new Error('只能上传jpg, jpeg和png格式的图片')); } //自定义文件名称 let timestamp = Date.now(); cb(null, timestamp + '.' + file.originalname.split('.').pop()); } }); const upload = multer({ storage: storage, limits: { fileSize: 1024 * 1024 //限制1M }, fileFilter: function(req, file, cb) { // 检查文件类型 if (!file.originalname.match(/.(jpg|jpeg|png)$/)) { return cb(new Error('只能上传jpg, jpeg和png格式的图片')); } // 继续上传 cb(null, true); } }); app.post('/upload', upload.single('file'), function(req, res) { res.send('文件上传成功!'); });
在上述示例中,我们增加了一个filename
方法,在文件上传之前对文件名进行判断并修改。另外,我们还使用fileFilter
- Dateigrößenbeschränkung
- Jetzt implementieren wir die Dateigrößenbeschränkung. Dies können wir tun, indem wir das Attribut
limits
in der Multer-Konfiguration angeben. Ein Beispiel ist wie folgt:
Im obigen Beispiel legen wir die maximale Größe der hochgeladenen Datei auf 1 MB fest (Einheit ist Byte). Wenn die hochgeladene Dateigröße diesen Wert überschreitet, gibt Multer automatisch einen Fehler zurück. Wir können die Callback-Funktion der Route auf Fehler überprüfen, indem wir feststellen, ob req.file vorhanden ist. Ein Beispiel ist wie folgt:
rrreee🎜Wenn im obigen Beispiel die Dateigröße 1 MB überschreitet, werden ein Fehlercode 400 und eine Fehlermeldung zurückgegeben. 🎜- 🎜Einschränkung des Dateinamens🎜🎜🎜Wenn wir den Namen der hochgeladenen Datei einschränken möchten, können wir die
fileFilter
-Methode von Multer verwenden, um dies zu erreichen. In der Methode fileFilter
können wir den hochgeladenen Dateinamen beurteilen. Wenn die Bedingungen erfüllt sind, fahren Sie mit dem Hochladen fort, andernfalls wird ein Fehler ausgegeben. Ein Beispiel ist wie folgt: 🎜rrreee🎜Im obigen Beispiel haben wir eine filename
-Methode hinzugefügt, um den Dateinamen vor dem Hochladen zu beurteilen und zu ändern. Darüber hinaus verwenden wir auch die Methode fileFilter
, um festzustellen, ob der Dateiname die Anforderungen erfüllt. Andernfalls wird ein Fehler ausgegeben. 🎜🎜🎜Zusammenfassung🎜🎜🎜Anhand der obigen Beispiele haben wir gelernt, Express- und Multer-Module zu verwenden, um Datei-Uploads sowie Größen- und Namensbeschränkungen zu implementieren. Ich glaube, dass Leser es flexibel in der tatsächlichen Entwicklung anwenden können. Es ist erwähnenswert, dass wir strengere Sicherheitskontrollen und Einschränkungen für Datei-Uploads in Produktionsumgebungen implementieren sollten. 🎜Das obige ist der detaillierte Inhalt vonNodejs implementiert den Datei-Upload-Namen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

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

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

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)

WebAssembly (WASM) Isagame-ChangerForFront-EnddeveloperSeekinghigh-Performancewebapplications.1. GWASMISABINYINTRUCTUCTIONFORMATTHATRUNSATNEAR-NATIVESPEED, EnablingLuageslikerust, C und GotoexecuteintheBrowser.2.

Server-Siderenderering (SSR) Innext.JSGenerateshtmlontheserverforeachRequest, VerbesserungsprequerformanceAndseo.1.SSRISIDEALFORDYNAMICCONTTHATCHANGESFREQUELFREQUELLE, SHOasUserDashboards.2.

Front-End-Anwendungen sollten Sicherheitsheader einstellen, um die Sicherheit zu verbessern, einschließlich: 1. Konfigurieren Sie grundlegende Sicherheitsheader wie CSP, um XSS, X-In-Inhalts-Typ-Optionen zu verhindern, um MIME-Erraten, X-Frame-Optionen zu verhindern, um Klick-Hijacking, X-XSS-Protekte zu verhindern, an diehbare alte Filter, HSTS-HSTS to-Kraft-HTTPs. 2. CSP-Einstellungen sollten vermeiden, unsichere In-Linien und unsichere Eval zu verwenden, Nonce oder Hash zu verwenden und den Berichtstests zu aktivieren. 3. HTTPS-bezogene Header umfassen die automatische Upgrade-Anforderung von HSTS und Referrer-Policy, um den Referator zu steuern. 4. Andere empfohlene Header wie Permis

Der Kern der VR-Web-Front-End-Entwicklung liegt in der Leistungsoptimierung und des interaktiven Designs. Sie müssen WebXR verwenden, um ein grundlegendes Erlebnis zu erstellen und Geräteunterstützung zu überprüfen. Wählen Sie A-Frame oder Drei.JS Framework Development; Einheitlich verarbeiten Eingangslogik verschiedener Geräte; Verbesserung der Leistung durch Reduzieren von Zeichnungsanrufen, die Steuerung der Modellkomplexität und die Vermeidung einer häufigen Müllsammlung; Entwerfen Sie UI und Interaktionen, die sich an VR -Eigenschaften anpassen, wie z. B. Blickklicks, Controller -Statuserkennung und angemessenes Layout von UI -Elementen.

Der Kern der Front-End-Fehlerüberwachung und -protokollierung besteht darin, Probleme so schnell wie möglich zu entdecken und zu lokalisieren und Benutzerbeschwerden zu vermeiden, bevor sie sie kennen. 1. Grundlegende Fehleraufnahmen erfordert die Verwendung von Fenster. Ein E -und Fenster. 2. Bei der Auswahl des Fehlerberichterstellungssystems werden Tools wie Wachposten, Laht, Bugsnag Priorität und achten Sie auf die Sourcemap -Unterstützung, die Verfolgung und die Gruppierung von SOURCEMAP -Funktionen. 3. Der gemeldete Inhalt sollte Browserinformationen, Seiten -URL, Fehlerstapel, Benutzeridentität und Network -Anforderungsfehlerinformationen enthalten. 4. Steuern Sie die Protokollfrequenz, um die Protokoll -Explosion durch Strategien wie Deduplizierung, aktuelle Begrenzung und hierarchische Berichterstattung zu vermeiden.

Die Ereignisdelegation ist eine Technik, die den Ereignisblasenmechanismus verwendet, um die Ereignisverarbeitung von untergeordneten Elementen an das übergeordnete Element zu übergeben. Es reduziert den Speicherverbrauch und unterstützt dynamisches Content -Management, indem sie die Hörer an übergeordneten Elementen verbinden. Die spezifischen Schritte sind: 1. Hörer des Bindung von Ereignissen an den übergeordneten Container; 2. Verwenden Sie Event.Target, um die untergeordneten Elemente zu bestimmen, die das Ereignis in der Rückruffunktion auslösen. 3. Führen Sie die entsprechende Logik basierend auf den untergeordneten Elementen aus. Zu den Vorteilen gehört die Verbesserung der Leistung, die Vereinfachung der Code und die Anpassung an dynamisch hinzugefügte Elemente. Bei der Verwendung sollten Sie auf Ereignisblasenbeschränkungen achten, übermäßige zentralisierte Überwachung vermeiden und vernünftigerweise übergeordnete Elemente auswählen.

Häufige Ursachen und Antwortmethoden für Front-End-Speicherlecks: 1. Der Ereignishörer wird nicht ordnungsgemäß gereinigt, z. 2. Die Verschlussreferenz führt dazu, dass die Variable recycelt wird, z. B. die externen Variablen in setInterval werden kontinuierlich referenziert. 3. Die Bibliothek von Drittanbietern wird nicht ordnungsgemäß verwendet, z. B. die Vue-Uhr ist nicht ordnungsgemäß gereinigt. Die Erkennungsmethode umfasst die Verwendung von Chromedevtools -Leistungs- und Speicherplatten zur Analyse von Speichertrends und Objektfreisetzungen. Best Practices, um Speicherlecks zu vermeiden, umfassen manuelle Reinigungsnäher beim Entladen von Komponenten, die Vermeidung von Verweise auf große Objekte in Verschluss, Verwendung von Schwächen/Schwachanlagen anstelle von gewöhnlichen Sammlungen, Optimierung komplexer struktureller Operationen und regelmäßiger Leistung

Zustandisalightgewicht, PerformantantantemanagementsLolutionForreActAppSthatavoidsRedux-SBOilerplate; 1.USSELECTIVETRECTELTOPTOPREVENTURNEYREYREYRE-REENDERSBYSELECTINGINYTENEEDEEDEDEDEDEDEDEDSPROPERTY;
