Dans node, multer est un middleware utilisé pour traiter le format de données de type "multipart/form-data", principalement utilisé pour le téléchargement de fichiers ; après avoir analysé le corps de la requête, le middleware ajoutera un corps à l'objet Request et un fichier ou objet fichiers.
L'environnement d'exploitation de cet article : système Windows 10, nodejs version 12.19.0, ordinateur Dell G3.
Multer est un middleware node.js, utilisé pour traiter les données de formulaire de type multipart/form-data. Il est principalement utilisé pour télécharger des fichiers. Il est écrit sur busboy et est très efficace.
Remarque : Multer ne traitera aucune donnée de formulaire de type non-multipart/form-data
Après avoir analysé le corps de la requête, Multer ajoutera un objet body et un ou plusieurs objets fichier à l'objet Request (lors du téléchargement de plusieurs fichiers à l'aide de l'objet Request). objet fichiers).
Parmi eux, l'objet body contient les champs de texte du formulaire soumis (le cas échéant), et l'objet fichier (ou fichiers) contient les fichiers téléchargés via le formulaire.
Conseils : multipart/form-data est utilisé pour spécifier le type spécial de données à transmettre, principalement le contenu non textuel que nous téléchargeons, tel que des images ou des mp3, etc.
const express = require('express') const multer = require('multer') const app = express() const storage = multer.diskStorage({ //保存路径 destination: function (req, file, cb) { cb(null, '/tmp/my-uploads') //注意这里的文件路径,不是相对路径,直接填写从项目根路径开始写就行了 }, //保存在 destination 中的文件名 filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()) } }) const upload = multer({ storage: storage }) app.post('/profile', upload.single('avatar'), function (req, res, next) { // req.file 是 `avatar` 文件的信息 // req.body 将具有文本域数据,如果存在的话 }) app.post('/photos/upload', upload.array('photos', 12), function (req, res, next) { // req.files 是 `photos` 文件数组的信息 // req.body 将具有文本域数据,如果存在的话 }) const cpUpload = upload.fields([{ name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 }]) app.post('/cool-profile', cpUpload, function (req, res, next) { // req.files 是一个对象 (String -> Array) 键是文件名,值是文件数组 // 例如: // req.files['avatar'][0] -> File // req.files['gallery'] -> Array // req.body 将具有文本域数据,如果存在的话 })
multer(options)
Multer accepte un objet d'options, dont le plus basique est l'attribut dest, qui indiquera à Multer où enregistrer le fichier téléchargé. Si vous omettez l'objet options, ces fichiers seront conservés en mémoire et ne seront jamais écrits sur le disque.
Habituellement, pour les applications Web générales, il vous suffit de définir l'attribut dest, comme ceci :
const upload = multer({ dest: 'uploads/' })
Si vous souhaitez plus de contrôle lors du téléchargement, vous pouvez utiliser l'option de stockage au lieu de dest. Multer dispose de deux moteurs de stockage : DiskStorage et MemoryStorage ; d'autres moteurs sont disponibles auprès de tiers.
Apprentissage recommandé : "Tutoriel vidéo Nodejs"
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!