Maison  >  Article  >  interface Web  >  Comment transférer des fichiers dans nodejs et les stocker dans la base de données en même temps

Comment transférer des fichiers dans nodejs et les stocker dans la base de données en même temps

PHPz
PHPzoriginal
2023-04-07 09:28:26954parcourir

Node.js est un langage de développement back-end très puissant, qui peut transférer des fichiers vers le serveur très facilement. Dans le même temps, il peut également conserver ces fichiers dans la base de données. Cet article présentera brièvement comment transférer simultanément des fichiers et conserver des fichiers dans la base de données via Node.js.

Transférer des fichiers vers le serveur

Dans Node.js, vous pouvez utiliser le framework Express pour recevoir des fichiers et les télécharger sur le serveur. Pour télécharger des fichiers, vous devez utiliser une bibliothèque appelée Multer. Multer est un middleware pour traiter les données multiparts/form-data dans Node.js. Il est construit sur busboy et peut utiliser le module multipart intégré de Node.js pour gérer les téléchargements de fichiers.

Pour utiliser Multer, vous devez d'abord l'installer. Multer peut être installé depuis la ligne de commande à l'aide de la commande suivante :

npm install --save multer

Une fois installé, vous pouvez importer le middleware depuis Multer et l'ajouter à votre application Express :

const express = require('express');
const multer = require('multer');
const app = express();
const upload = multer({ dest: 'uploads/' });

app.post('/upload', upload.single('file'), (req, res) => {
  // 处理文件上传
  res.send('文件已上传');
});

Dans le code ci-dessus, upload<. la m> stocke le fichier téléchargé dans le répertoire spécifié. Dans ce cas, les fichiers seront stockés dans un dossier nommé « Uploads ». <code>upload.single方法将上传的文件存储在指定目录中。在这种情况下,文件将存储在名为“上传”的文件夹中。

从客户端上传文件

现在可以在Node.js中将文件上传到服务器。但如何从客户端向服务器上传文件呢?HTML5提供了一个名为的输入类型,可以使用它将文件上传到服务器。在HTML中,可以使用以下代码向客户端添加上传文件的表单:

<form action="/upload" enctype="multipart/form-data" method="POST">
  <input type="file" name="file">
  <input type="submit" value="上传文件">
</form>

在上面的HTML代码中,提交表单后,文件将上传到名为“/upload”的路由上。

将文件存储到数据库

在将文件上传到服务器之后,需要将其保存在数据库中。以下是一些方法,可以将文件保存到常见的数据库系统中:

将文件保存到MongoDB中

要在MongoDB中存储文件,可以将文件转换为二进制数据以及关于该文件的其他细节(例如文件名和文件类型),然后将其存储在MongoDB GridFS中。

以下是一个示例,将文件存储在MongoDB中:

const MongoClient = require('mongodb').MongoClient;
const Grid = require('gridfs-stream');

MongoClient.connect('mongodb://localhost/my_database', (err, client) => {
  const db = client.db('my_database');
  const gfs = Grid(db, require('mongodb'));
  
  const writestream = gfs.createWriteStream({
      filename: 'my_file.txt'
  });
  
  fs.createReadStream('./uploads/my_file.txt').pipe(writestream);
});

在上面的代码中,使用gridfs-stream

Télécharger des fichiers depuis le client

Il est désormais possible de télécharger des fichiers sur le serveur dans Node.js. Mais comment télécharger des fichiers du client vers le serveur ? HTML5 fournit un type d'entrée appelé , qui peut être utilisé pour télécharger des fichiers sur le serveur. En HTML, un formulaire de téléchargement de fichiers peut être ajouté au client en utilisant le code suivant :

const mysql = require('mysql');

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'my_database'
});

const file = fs.readFileSync('./uploads/my_file.txt');
const sql = 'INSERT INTO files (filename, file) VALUES (?, ?)';
const values = ['my_file.txt', file];
connection.query(sql, values, (error, results, fields) => {
  if (error) throw error;
  res.send('文件已上传');
});
Dans le code HTML ci-dessus, après avoir soumis le formulaire, le fichier sera téléchargé sur la route nommée "/upload".

Stocker le fichier dans la base de données

Après avoir téléchargé le fichier sur le serveur, il doit être enregistré dans la base de données. Voici quelques façons d'enregistrer des fichiers sur des systèmes de bases de données courants :

Enregistrement de fichiers dans MongoDB 🎜🎜 Pour stocker un fichier dans MongoDB, vous pouvez convertir le fichier en données binaires et d'autres détails sur le fichier tels que le nom et le type de fichier) et stocker dans MongoDB GridFS. 🎜🎜Voici un exemple pour stocker un fichier dans MongoDB : 🎜rrreee🎜Dans le code ci-dessus, la bibliothèque gridfs-stream est utilisée pour enregistrer le fichier dans un document nommé "my_file.txt". Cette bibliothèque permet de stocker des données binaires volumineuses (telles que des fichiers) dans MongoDB à l'aide de MongoDB GridFS. 🎜🎜 Sauvegarde de fichiers dans MySQL 🎜🎜 Pour stocker un fichier dans MySQL, cela se fait en créant une ligne BLOB contenant les données binaires du fichier. Voici un exemple de stockage d'un fichier dans une base de données MySQL : 🎜rrreee🎜 Dans le code ci-dessus, le fichier est lu en mémoire puis inséré dans une table nommée "files" à l'aide de la méthode de requête de MySQL. 🎜🎜Conclusion🎜🎜Cet article explique comment utiliser Node.js pour télécharger des fichiers du client vers le serveur et stocker les fichiers dans une base de données. En utilisant le middleware Multer, les fichiers peuvent être facilement téléchargés sur le serveur. Pour stocker des fichiers dans MongoDB ou MySQL, vous pouvez utiliser respectivement les types de données GridFS et BLOB pour enregistrer les fichiers dans la base de données correspondante. Il s’agit d’une fonctionnalité très puissante utilisée dans de nombreuses applications Web. 🎜

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!

Déclaration:
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