Nodejs implementiert den Datei-Upload-Namen

WBOY
Freigeben: 2023-05-28 13:29:41
Original
781 Leute haben es durchsucht

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.

  1. 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
Nach dem Login kopieren
  1. 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');
});
Nach dem Login kopieren

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。上传成功后,服务器返回一段字符串。

  1. 文件大小限制

现在我们来实现文件大小的限制,我们可以通过在multer的配置中指定limits属性来实现。示例如下:

const upload = multer({
  dest: 'uploads/',
  limits: {
    fileSize: 1024 * 1024 //限制1M
  }
});
Nach dem Login kopieren

在上述示例中,我们设置上传文件的最大大小为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('文件上传成功!');
});
Nach dem Login kopieren

在上述示例中,如果文件大小超出了1M,则返回400错误码和一段错误消息。

  1. 文件名称限制

如果我们想实现对上传的文件名进行限制,我们可以使用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('文件上传成功!');
});
Nach dem Login kopieren

在上述示例中,我们增加了一个filename方法,在文件上传之前对文件名进行判断并修改。另外,我们还使用fileFilter

    Dateigrößenbeschränkung
    1. 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:
    rrreee

    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!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage