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.
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
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'); });
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
。上传成功后,服务器返回一段字符串。
现在我们来实现文件大小的限制,我们可以通过在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
dans la configuration de multer. Un exemple est le suivant : 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. 🎜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!