ホームページ > 記事 > ウェブフロントエンド > ファイルのアップロードと動的画像処理をオンザフライで行うための Express Web アプリの構築
このチュートリアルでは、ファイルのアップロードを処理し、SharpExpress.js を使用してサーバーを構築する方法を示します。 🎜>.
前提条件Node.js と npm がインストールされていることを確認してください。このチュートリアルでは次のライブラリを使用します:
mkdir image-upload-server cd image-upload-server npm init -yこれにより、新しいプロジェクト フォルダーが作成され、package.json ファイルが初期化されます。
次のコマンドを実行すると、すべての依存関係をインストールできます。
npm install express multer sharp cors必要なディレクトリを作成します
mkdir original-image transform-image
Express.js を使用して基本的なサーバーをセットアップしましょう。プロジェクトのルートにindex.jsというファイルを作成し、次のコードを追加してサーバーを設定します:
const express = require('express'); const cors = require('cors'); const multer = require('multer'); const path = require('path'); const sharp = require('sharp'); const fs = require('fs'); const app = express(); // Middleware for CORS and JSON parsing app.use(cors()); app.use(express.json()); app.use(express.urlencoded({ extended: true }));この基本セットアップには以下が含まれます:
Multer を使用します。 Multer を使用すると、アップロードされたファイルを指定したディレクトリに保存できます。
次のコードを追加してMulter を構成します:
// Configure multer for file storage const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'original-image'); // Ensure the 'original-image' directory exists }, filename: function (req, file, cb) { const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9); cb(null, file.fieldname + '-' + uniqueSuffix + path.extname(file.originalname)); } }); const upload = multer({ storage: storage });この設定により、次のことが保証されます:
POST エンドポイントを作成します。ユーザーはファイルをサーバーに送信し、サーバーはそのファイルをオリジナル画像ディレクトリに保存します。
ファイルのアップロードを処理するために次のコードを追加します:
// File upload endpoint app.post('/upload', upload.single('file'), (req, res) => { const file = req.file; if (!file) { return res.status(400).send({ message: 'Please select a file.' }); } const url = `http://localhost:3000/${file.filename}`; // Store file path with original filename as the key db.set(file.filename, file.path); res.json({ message: 'File uploaded successfully.', url: url }); });このエンドポイントは次のことを行います:
次に、アップロードされたファイルを提供するための GET エンドポイントを作成しましょう。クエリ パラメーター (サイズ変更、形式変換など) が指定されている場合、サーバーはそれに応じて画像を処理します。
アップロードされたファイルを提供するには、次のコードを追加します:
mkdir image-upload-server cd image-upload-server npm init -y
このエンドポイント:
Sharp ライブラリを使用すると、サイズ変更、形式変換、品質調整など、画像に対してさまざまな変換を実行できます。
これらの変換を処理する processImage 関数を追加します。
npm install express multer sharp cors
この機能:
最後に、次のコードを追加してサーバーを起動します:
mkdir original-image transform-image
これにより、ポート 3000 でサーバーが起動します。
Postman を使用してファイル アップロード機能をテストするには、次の手順に従います。
コンピュータでPostmanを起動します。 Postman がインストールされていない場合は、ここからダウンロードできます。
応答例:
mkdir image-upload-server cd image-upload-server npm init -y
次に、ブラウザを使用して、変換を含む画像の取得をテストしてみましょう。
画像を取得するには、ブラウザを開いて、ファイルのアップロード後に受け取った URL に移動するだけです。たとえば、応答 URL が次の場合:
npm install express multer sharp cors
ブラウザのアドレスバーにこの URL を入力し、Enter を押してください。元の画像が表示されるはずです。
次に、サイズ変更、形式変換、品質調整のためのクエリ パラメーターを追加して、動的な画像変換をテストしてみましょう。
ブラウザで、画像 URL にクエリ パラメータを追加して、変換をテストします。以下にいくつかの例を示します:
mkdir original-image transform-image
const express = require('express'); const cors = require('cors'); const multer = require('multer'); const path = require('path'); const sharp = require('sharp'); const fs = require('fs'); const app = express(); // Middleware for CORS and JSON parsing app.use(cors()); app.use(express.json()); app.use(express.urlencoded({ extended: true }));
// Configure multer for file storage const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'original-image'); // Ensure the 'original-image' directory exists }, filename: function (req, file, cb) { const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9); cb(null, file.fieldname + '-' + uniqueSuffix + path.extname(file.originalname)); } }); const upload = multer({ storage: storage });
// File upload endpoint app.post('/upload', upload.single('file'), (req, res) => { const file = req.file; if (!file) { return res.status(400).send({ message: 'Please select a file.' }); } const url = `http://localhost:3000/${file.filename}`; // Store file path with original filename as the key db.set(file.filename, file.path); res.json({ message: 'File uploaded successfully.', url: url }); });
ブラウザに処理された画像が表示され、変換が正しく適用されたかどうかを確認できます。
この画像アップロードおよび処理サーバーは、画像のアップロード、変換、取得を処理するための堅牢なソリューションを提供します。ファイル処理には Multer、画像処理には Sharp を使用し、クエリ パラメーターによるサイズ変更、形式変換、品質調整をサポートします。このシステムは処理された画像を効率的にキャッシュしてパフォーマンスを最適化し、高速かつ応答性の高い画像配信を保証します。このアプローチにより、動的な画像変換を必要とするアプリケーションの画像管理が簡素化され、開発者にとって多用途なツールになります。
以上がファイルのアップロードと動的画像処理をオンザフライで行うための Express Web アプリの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。