こんにちは。この記事では、nodejs サーバーでファイルのアップロードを処理し、ベスト プラクティスに従ってファイルを保存する方法を説明します。ファイル ストレージ サービスとして Apexx クラウドを使用します。
npm i express nodemon cors multer @apexxcloud/sdk-node dotenv
インストールしたら、package.json を更新して開始スクリプトを追加します
"scripts":{ "start": "nodemon index.js", // rest of the scripts }
ルートフォルダーにindex.jsファイルを作成し、srcというフォルダーを作成します。 src フォルダーにコントローラーとルートのフォルダーをそれぞれ作成します。フォルダー構造は次のようになります。
project-root/ │ ├── index.js # Entry point of the application ├── package.json # Project metadata and dependencies ├── package-lock.json # Auto-generated dependency tree ├── node_modules/ # Installed dependencies │ └── src/ ├── controllers/ # Contains controller files │ └── file.controller.js │ ├── routes/ # Contains route files │ └── file.route.js
Apexx クラウドにログインするか、ここで新しいアカウントを作成してください
バケットに移動します。
[バケットの作成] をクリックし、バケットに一意の名前を入力します。
ご希望の地域を選択してください
バケットを確認して作成します
API キーに移動します
「API キーの作成」をクリックし、キーの名前を入力します
キーを確認して作成します
秘密キーをコピーし、安全な場所に保管してください。
次に、アクセス キーもコピーします。
file.controller.js でリクエストを処理するコントローラーの作成を始めましょう。
// Setup our apexx cloud sdk const ApexxCloud = require("@apexxcloud/sdk-node"); const storage = new ApexxCloud({ accessKey: process.env.APEXXCLOUD_ACCESS_KEY, secretKey: process.env.APEXXCLOUD_SECRET_KEY, region: process.env.APEXXCLOUD_REGION, bucket: process.env.APEXXCLOUD_BUCKET, }); // Upload file function const uploadFile = async (req, res) => { try { if (!req.file) { return res.status(400).json({ error: "No file provided" }); } const { originalname, filename, size, path, mimetype } = req.file; const { key, visibility } = req.query; const result = await storage.files.upload(req.file.buffer, { key: key || orginalname, visibility: visiblity || "public", contentType: mimetype, }); res.status(200).json(result); } catch (error) { console.log(error); res.status(500).json({ error: `File upload failed: ${error.message}` }); } };
まず、@apexxcloud/sdk-node をインポートし、資格情報を渡してストレージ オブジェクトを作成します。次に、uploadFile という関数を作成しています。この関数では、req.query からキーと可視性を取得し、req.file
からファイルの詳細を取得しています。次に、apexx Cloud SDK のアップロード機能を使用して、apexx Cloud にアップロードします。アップロードするときに、ファイルの公開設定を構成できます。公開または非公開にすることができます。デフォルトでは、すべてのファイルが公開されます。
次に、file.route.js でルートを設定しましょう。
const express = require("express"); const router = express.Router(); const multer = require("multer"); const { uploadFile } = require("../controllers/file.controller") // setup multer const upload = multer({ storage: multer.memoryStorage() }); // setup the route router.post("/upload", upload.single("file"), uploadFile); // export the router module.exports = router
次に、index.js ファイルをセットアップしましょう。
const express = require("express"); const mongoose = require("mongoose"); const dotenv = require("dotenv"); const cors = require("cors"); // load env variables dotenv.config(); // import file route const fileRoute = require("./src/routes/file.route"); // setup express const app = express(); app.use(express.urlencoded({ extended: true, limit: "100mb" })); app.use(express.json({ limit: "100mb" })); app.use(cors()); // setup the file route app.use(fileRoutes); const port = 8000 app.listen(port, () => { console.log(`Server running at port:${port}`); });
ターミナルを開いて次を実行します:
npm start、すべてが正常に完了すると、「ポート:8000 で実行中のサーバー」がログに記録されるはずです。
postman を使用して API をテストします。
Body を選択し、form-data を確認し、file というキーを追加して、タイプを file に設定します。ファイルをアップロードして、[送信] をクリックします。
以下のような応答が得られるはずです:
{ "data": { "message": "File uploaded successfully", "key": "file.png", "location": "https://cdn.apexxcloud.com/f/ojGnBqCLkTnI/file", "bucket": "your-bucket-name", "region": "WNAM", "visibility": "private", "size": 14513, "content_type": "image/png" } }
ファイルがアップロードされたことを示します。 Apexx Cloud ダッシュボードに移動し、バケットに移動すると、そこにアップロードしたファイルが表示されるはずです。
これで、nodejs でのファイル アップロードの実装が完了しました。最大の利点は、Apexx Cloud がオンザフライ変換と超高速 CDN を無料で提供することです。詳細についてはここを参照し、ドキュメントについてはここを参照してください。
この記事では、Apexx Cloud と Multer を使用して、nodejs アプリケーションでファイルのアップロードを処理する方法を説明しました。
次の記事では、ファイルのアップロードに AWS S3 を使用する方法を説明します。それまでは、サインオフ - あなたの FII
ファイルのアップロードについて心配する必要はありません: 今すぐ Apexx Cloud に無料でサインアップしてください
以上がNodejs でファイルのアップロードを実装する方法: ステップバイステップ ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。