2014-09-14 4 views
2

J'ai une application Express 4 qui doit traiter des fichiers de données téléchargées par les utilisateurs et retourner une sortie. Les fichiers sont relativement petits (1-2 Mo), donc je voudrais les télécharger directement en mémoire (par exemple comme une variable de chaîne UTF-8) plutôt que de les enregistrer sur le disque. Le plus proche que j'ai obtenu jusqu'à présent est le module multer et son onFileUploadData événement, mais je ne peux pas comprendre comment prendre les données et le transmettre à un gestionnaire d'itinéraire dans un fichier séparé.Express 4: Comment télécharger un fichier en mémoire (par exemple sous la forme d'une chaîne UTF-8) plutôt que sur un disque?

Est-ce possible avec Node.js/Express?

Répondre

5

Je ne sais pas si cette option était disponible au moment de la question, mais il est certainement maintenant. Vous pouvez définir l'option enMémoire à true dans multer et que vous donnerez un objet tampon. Aime ceci:

app.use(multer({ 
    dest: './uploads/', 
    inMemory: true 
})); 

Vous pouvez trouver toutes les options disponibles pour multer ici: https://github.com/expressjs/multer#options


Mise à jour pour multer 1.x

la version Multer 1.0.0 introduit le concept de moteurs de stockage et est livré avec deux moteurs par défaut: DiskStorage et MemoryStorage.

Voici comment vous pouvez instancier pour stocker les fichiers dans la mémoire:

multer({ storage: multer.memoryStorage({}) }) 
Questions connexes