ホームページ  >  記事  >  ウェブフロントエンド  >  Nodejsでファイルを転送し、同時にデータベースに保存する方法

Nodejsでファイルを転送し、同時にデータベースに保存する方法

PHPz
PHPzオリジナル
2023-04-07 09:28:26997ブラウズ

Node.js は非常に強力なバックエンド開発言語であり、ファイルをサーバーに簡単に転送できます。同時に、これらのファイルをデータベースに保存することもできます。この記事では、Node.js を介してデータベースへのファイルの転送とファイルの永続化を同時に行う方法を簡単に紹介します。

ファイルをサーバーに転送する

Node.js では、Express フレームワークを使用してファイルを受信し、サーバーにアップロードできます。ファイルをアップロードするには、Multer というライブラリを使用する必要があります。 Multer は、Node.js でマルチパート/フォームデータ データを処理するためのミドルウェアです。 Busboy 上に構築されており、Node.js の組み込みマルチパート モジュールを使用してファイルのアップロードを処理できます。

Multer を使用するには、まずインストールする必要があります。 Multer は、次のコマンドを使用してコマンド ラインからインストールできます:

npm install --save multer

インストールしたら、Multer からミドルウェアをインポートして 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('文件已上传');
});

コードでは、upload.single メソッドは、アップロードされたファイルを指定されたディレクトリに保存します。この場合、ファイルは「Uploads」という名前のフォルダーに保存されます。

クライアントからのファイルのアップロード

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 ライブラリを使用してファイルをディレクトリに保存します。 「my_file .txt」ドキュメントと呼ばれます。このライブラリを使用すると、MongoDB GridFS を使用して大きなバイナリ データ (ファイルなど) を MongoDB に保存できます。

MySQL へのファイルの保存

ファイルを MySQL に保存するには、ファイルのバイナリ データを含む BLOB 行を作成します。ファイルを MySQL データベースに保存する例を次に示します。

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

上記のコードでは、ファイルはメモリに読み取られ、MySQL のクエリ メソッド テーブルを使用して「files」という名前のファイルに挿入されます。

結論

この記事では、Node.js を使用してクライアントからサーバーにファイルをアップロードし、そのファイルをデータベースに保存する方法について説明します。 Multerミドルウェアを使用することで、ファイルを簡単にサーバーにアップロードできます。 MongoDB または MySQL にファイルを保存するには、それぞれ GridFS および BLOB データ型を使用して、対応するデータベースにファイルを保存できます。これは、多くの Web アプリケーションで使用されている非常に強力な機能です。

以上がNodejsでファイルを転送し、同時にデータベースに保存する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。