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.
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
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
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. 🎜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!