Nodejs implémente le nom de téléchargement du fichier

WBOY
Libérer: 2023-05-28 13:29:41
original
782 Les gens l'ont consulté

Taille et limites de taille

Avec le développement continu d'Internet, le téléchargement de fichiers est devenu l'une des fonctions nécessaires de nombreux sites Web. Dans Node.js, les téléchargements de fichiers peuvent être implémentés à l'aide de divers modules et technologies. Ci-dessous, nous présenterons une méthode de téléchargement de fichiers basée sur le framework Express et expliquerons comment implémenter des restrictions de taille et de nom sur les téléchargements de fichiers.

  1. Installer les modules dépendants

Dans cet article, nous utiliserons le framework Express comme serveur Web et utiliserons le module multer pour gérer les téléchargements de fichiers. Installons d'abord ces modules dépendants :

npm install express multer --save
Copier après la connexion
  1. Utilisation de base du téléchargement de fichiers

Ce qui suit est un exemple d'itinéraire de téléchargement de fichier de base :

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');
});
Copier après la connexion

Dans le code ci-dessus, nous utilisons le upload.single </ de multer. code> pour gérer le téléchargement de fichiers, l'attribut de nom d'un seul fichier doit être <code>file. Une fois le téléchargement réussi, le serveur renvoie une chaîne. upload.single方法来处理文件上传,单个文件的name属性必须是file。上传成功后,服务器返回一段字符串。

  1. 文件大小限制

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

const upload = multer({
  dest: 'uploads/',
  limits: {
    fileSize: 1024 * 1024 //限制1M
  }
});
Copier après la connexion

在上述示例中,我们设置上传文件的最大大小为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('文件上传成功!');
});
Copier après la connexion

在上述示例中,如果文件大小超出了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('文件上传成功!');
});
Copier après la connexion

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

    Limite de taille de fichier
    1. Implémentons maintenant la limite de taille de fichier. Nous pouvons le faire en spécifiant l'attribut limits dans la configuration de multer. Un exemple est le suivant :
    rrreee

    Dans l'exemple ci-dessus, nous définissons la taille maximale du fichier téléchargé sur 1 Mo (l'unité est en octets). Si la taille du fichier téléchargé dépasse cette valeur, multer renverra automatiquement une erreur. Nous pouvons vérifier les erreurs dans la fonction de rappel de la route en déterminant si req.file existe. Un exemple est le suivant :

    rrreee🎜Dans l'exemple ci-dessus, si la taille du fichier dépasse 1 Mo, un code d'erreur 400 et un message d'erreur seront renvoyés. 🎜
      🎜Restriction du nom de fichier🎜🎜🎜Si nous voulons limiter le nom du fichier téléchargé, nous pouvons utiliser la méthode fileFilter de multer pour y parvenir. Dans la méthode fileFilter, nous pouvons juger du nom du fichier téléchargé. Si les conditions sont remplies, continuez le téléchargement, sinon une erreur sera générée. Un exemple est le suivant : 🎜rrreee🎜Dans l'exemple ci-dessus, nous avons ajouté une méthode filename pour juger et modifier le nom du fichier avant de le télécharger. De plus, nous utilisons également la méthode fileFilter pour déterminer si le nom du fichier répond aux exigences. Si ce n'est pas le cas, une erreur est générée. 🎜🎜🎜Résumé🎜🎜🎜Grâce aux exemples ci-dessus, nous avons appris à utiliser les modules Express et multer pour implémenter le téléchargement de fichiers ainsi que les restrictions de taille et de nom. Je pense que les lecteurs peuvent l'appliquer de manière flexible dans le développement réel. Il convient de noter que nous devrions mettre en œuvre des contrôles de sécurité et des restrictions plus stricts sur les téléchargements de fichiers dans les environnements de production. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal