Heim > Web-Frontend > Front-End-Fragen und Antworten > So übertragen Sie Dateien in NodeJS und speichern sie gleichzeitig in der Datenbank

So übertragen Sie Dateien in NodeJS und speichern sie gleichzeitig in der Datenbank

PHPz
Freigeben: 2023-04-07 12:55:13
Original
1033 Leute haben es durchsucht

Node.js ist eine sehr leistungsstarke Back-End-Entwicklungssprache, mit der Dateien sehr bequem auf den Server übertragen werden können. Gleichzeitig können diese Dateien auch in der Datenbank gespeichert werden. In diesem Artikel wird kurz vorgestellt, wie Sie über Node.js gleichzeitig Dateien übertragen und Dateien in der Datenbank speichern können.

Dateien auf den Server übertragen

In Node.js können Sie das Express-Framework verwenden, um Dateien zu empfangen und auf den Server hochzuladen. Zum Hochladen von Dateien müssen Sie eine Bibliothek namens Multer verwenden. Multer ist eine Middleware zur Verarbeitung von Multipart-/Formulardatendaten in Node.js. Es basiert auf Busboy und kann das integrierte Multipart-Modul von Node.js verwenden, um Datei-Uploads zu verarbeiten.

Um Multer nutzen zu können, müssen Sie es zunächst installieren. Multer kann über die Befehlszeile mit dem folgenden Befehl installiert werden:

npm install --save multer
Nach dem Login kopieren

Nach der Installation können Sie die Middleware von Multer importieren und zu Ihrer Express-Anwendung hinzufügen:

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('文件已上传');
});
Nach dem Login kopieren

Im obigen Code upload The single speichert die hochgeladene Datei im angegebenen Verzeichnis. In diesem Fall werden die Dateien in einem Ordner namens „Uploads“ gespeichert. <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>
Nach dem Login kopieren

在上面的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);
});
Nach dem Login kopieren

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

Dateien vom Client hochladen

Es ist jetzt möglich, Dateien auf den Server in Node.js hochzuladen. Aber wie lädt man Dateien vom Client auf den Server hoch? HTML5 bietet einen Eingabetyp namens , der zum Hochladen von Dateien auf den Server verwendet werden kann. In HTML kann dem Client mit dem folgenden Code ein Formular zum Hochladen von Dateien hinzugefügt werden:

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('文件已上传');
});
Nach dem Login kopieren
Im obigen HTML-Code wird die Datei nach dem Absenden des Formulars auf die Route mit dem Namen „/upload“ hochgeladen.

Datei in Datenbank speichern

Nachdem die Datei auf den Server hochgeladen wurde, muss sie in der Datenbank gespeichert werden. Hier sind einige Möglichkeiten, Dateien in gängigen Datenbanksystemen zu speichern:

Dateien in MongoDB speichern 🎜🎜 Um eine Datei in MongoDB zu speichern, können Sie die Datei in Binärdaten konvertieren und andere Details zur Datei (z. B. Name und Dateityp) speichern es in MongoDB GridFS. 🎜🎜Hier ist ein Beispiel zum Speichern einer Datei in MongoDB: 🎜rrreee🎜Im obigen Code wird die gridfs-stream-Bibliothek verwendet, um die Datei in einem Dokument mit dem Namen „my_file.txt“ zu speichern. Diese Bibliothek ermöglicht das Speichern großer Binärdaten (z. B. Dateien) in MongoDB mithilfe von MongoDB GridFS. 🎜🎜 Dateien in MySQL speichern 🎜🎜 Um eine Datei in MySQL zu speichern, wird dies durch die Erstellung einer BLOB-Zeile erreicht, die die Binärdaten der Datei enthält. Hier ist ein Beispiel für das Speichern einer Datei in einer MySQL-Datenbank: 🎜rrreee🎜 Im obigen Code wird die Datei in den Speicher eingelesen und dann mithilfe der MySQL-Abfragemethode in eine Tabelle mit dem Namen „Dateien“ eingefügt. 🎜🎜Fazit🎜🎜In diesem Artikel wird erläutert, wie Sie mit Node.js Dateien vom Client auf den Server hochladen und in einer Datenbank speichern. Durch die Verwendung der Multer-Middleware können Dateien einfach auf den Server hochgeladen werden. Um Dateien in MongoDB oder MySQL zu speichern, können Sie die Datentypen GridFS bzw. BLOB verwenden, um die Dateien in der entsprechenden Datenbank zu speichern. Dies ist eine sehr leistungsstarke Funktion, die in vielen Webanwendungen verwendet wird. 🎜

Das obige ist der detaillierte Inhalt vonSo übertragen Sie Dateien in NodeJS und speichern sie gleichzeitig in der Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage