ガイド: ファイルのアップロードと動的画像処理のための Express Web アプリの構築
このチュートリアルでは、ファイルのアップロードを処理し、SharpExpress.js を使用してサーバーを構築する方法を示します。 🎜>.
前提条件始める前に、
Node.js と npm がインストールされていることを確認してください。このチュートリアルでは次のライブラリを使用します:
- Express.js - サーバーのセットアップ用。
- Multer - ファイルのアップロードを処理します。
- シャープ - 画像処理用。
- CORS - クロスオリジンリクエストを許可します。
ステップ 1: プロジェクトのセットアップ
プロジェクト用に新しいディレクトリを作成することから始めます:
mkdir image-upload-server cd image-upload-server npm init -yこれにより、新しいプロジェクト フォルダーが作成され、package.json ファイルが初期化されます。
次のコマンドを実行すると、すべての依存関係をインストールできます。
npm install express multer sharp cors必要なディレクトリを作成します
次の 2 つのディレクトリが必要になります:
-
アップロードされた元の画像を保存するoriginal-image。
- 処理された画像を保存するtransform-image。
mkdir original-image transform-image
ステップ 2: Express サーバーをセットアップする
次に、
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 }));この基本セットアップには以下が含まれます:
- CORS: クロスオリジンリクエストを許可します。
- express.json() および express.urlencoded() は、受信リクエスト データを解析します。
ステップ 3: ファイルアップロード用に Multer を設定する
ファイルのアップロードを処理するには、
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 });この設定により、次のことが保証されます:
- アップロードされたファイルは、オリジナル画像フォルダーに保存されます。
- 各ファイルには、現在のタイムスタンプと乱数に基づいて一意の名前が付けられます。
ステップ 4: ファイル アップロード エンドポイントを作成する
次に、ファイルアップロード用の
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 }); });このエンドポイントは次のことを行います:
- 単一ファイルのアップロードを受信します (フィールド名ファイル付き)。
- アップロードされたファイルの URL を返します。
ステップ 5: アップロードされたファイルを提供する
次に、アップロードされたファイルを提供するための GET エンドポイントを作成しましょう。クエリ パラメーター (サイズ変更、形式変換など) が指定されている場合、サーバーはそれに応じて画像を処理します。
アップロードされたファイルを提供するには、次のコードを追加します:
mkdir image-upload-server cd image-upload-server npm init -y
このエンドポイント:
- ファイル名に基づいて DB マップからファイルを取得します。
- サイズ変更、形式変換、または品質調整が指定されている場合、画像を処理します。
- パフォーマンスを向上させるために、処理された画像をキャッシュします。
ステップ 6: Sharp で画像を処理する
Sharp ライブラリを使用すると、サイズ変更、形式変換、品質調整など、画像に対してさまざまな変換を実行できます。
これらの変換を処理する processImage 関数を追加します。
npm install express multer sharp cors
この機能:
- h (高さ) パラメータと w (幅) パラメータに基づいて画像のサイズを変更します。
- f パラメータに基づいて画像形式を変換します (JPEG、PNG、WebP など)。
- q パラメーター (オプション) に基づいて画質を調整します。
- 処理された画像をtransform-imageフォルダーに保存します。
ステップ 7: サーバーを起動する
最後に、次のコードを追加してサーバーを起動します:
mkdir original-image transform-image
これにより、ポート 3000 でサーバーが起動します。
ステップ 8: サーバーのテスト
1. Postman を使用したファイルのアップロードのテスト
Postman を使用してファイル アップロード機能をテストするには、次の手順に従います。
1.1 オープンポストマン
コンピュータでPostmanを起動します。 Postman がインストールされていない場合は、ここからダウンロードできます。
1.2 POSTリクエストの作成
- リクエストのタイプを POST に設定します。
- URL フィールドに、http://localhost:3000/upload. と入力します。
1.3 本体にファイルを追加する
- ボディ タブを選択します。
- フォームデータ オプションを選択します。
- フォームで、キーを file に設定します (これは multer 設定のフィールド名と一致する必要があります)。
- ファイルの選択 ボタンをクリックし、コンピューターから画像ファイルを選択します。
1.4 リクエストの送信
- 送信をクリックします。
- アップロードが成功すると、アップロードされた画像の URL を含む応答を受け取るはずです。
応答例:
mkdir image-upload-server cd image-upload-server npm init -y
2. ブラウザを介した画像の取得と処理のテスト
次に、ブラウザを使用して、変換を含む画像の取得をテストしてみましょう。
2.1 アップロードされた画像を取得する
画像を取得するには、ブラウザを開いて、ファイルのアップロード後に受け取った URL に移動するだけです。たとえば、応答 URL が次の場合:
npm install express multer sharp cors
ブラウザのアドレスバーにこの URL を入力し、Enter を押してください。元の画像が表示されるはずです。
3. クエリパラメータを使用した画像変換のテスト
次に、サイズ変更、形式変換、品質調整のためのクエリ パラメーターを追加して、動的な画像変換をテストしてみましょう。
3.1 変換用のクエリパラメータの追加
ブラウザで、画像 URL にクエリ パラメータを追加して、変換をテストします。以下にいくつかの例を示します:
- 画像のサイズを幅 200 ピクセル、高さ 300 ピクセルに変更します:
mkdir original-image transform-image
- 画像を PNG 形式に変換します:
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 }));
- 画像を 90% の品質で WebP 形式に変換します:
// 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 });
- 画像のサイズを幅 400 ピクセル、高さ 500 ピクセルに変更し、80% の品質で JPEG に変換します:
// 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 }); });
3.2 予期される動作
- クエリ パラメータを使用していずれかの URL にアクセスすると、サーバーはそれに応じて画像を処理します。
- 画像が以前に同じパラメータで処理されている場合は、キャッシュされたバージョンが提供されます。
- 画像がまだ処理されていない場合は、画像が処理され (サイズ変更、形式の変換、品質の調整)、今後のリクエストに備えて、transform-image フォルダーに保存されます。
ブラウザに処理された画像が表示され、変換が正しく適用されたかどうかを確認できます。
ワークフロー例
- Postman 経由で画像をアップロードします。
- Postman から提供された URL を使用して、ブラウザでアップロードされた画像を取得します。
- ブラウザで URL を変更します。サイズ変更の動作を確認するには ?h=300&w=200 などのクエリ パラメータを追加し、形式変換には ?f=webp&q=90 を追加します。
結論
この画像アップロードおよび処理サーバーは、画像のアップロード、変換、取得を処理するための堅牢なソリューションを提供します。ファイル処理には Multer、画像処理には Sharp を使用し、クエリ パラメーターによるサイズ変更、形式変換、品質調整をサポートします。このシステムは処理された画像を効率的にキャッシュしてパフォーマンスを最適化し、高速かつ応答性の高い画像配信を保証します。このアプローチにより、動的な画像変換を必要とするアプリケーションの画像管理が簡素化され、開発者にとって多用途なツールになります。
以上がファイルのアップロードと動的画像処理をオンザフライで行うための Express Web アプリの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

はい、JavaScriptのエンジンコアはCで記述されています。1)C言語は、JavaScriptエンジンの開発に適した効率的なパフォーマンスと基礎となる制御を提供します。 2)V8エンジンを例にとると、そのコアはCで記述され、Cの効率とオブジェクト指向の特性を組み合わせて書かれています。3)JavaScriptエンジンの作業原理には、解析、コンパイル、実行が含まれ、C言語はこれらのプロセスで重要な役割を果たします。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ホットトピック









