ホームページ > ウェブフロントエンド > jsチュートリアル > Nodejs でファイルのアップロードを実装する方法: ステップバイステップ ガイド

Nodejs でファイルのアップロードを実装する方法: ステップバイステップ ガイド

Patricia Arquette
リリース: 2025-01-03 01:36:39
オリジナル
866 人が閲覧しました

導入

こんにちは。この記事では、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 クラウドのセットアップ

  1. Apexx クラウドにログインするか、ここで新しいアカウントを作成してください

  2. バケットに移動します。

  3. [バケットの作成] をクリックし、バケットに一意の名前を入力します。

  4. ご希望の地域を選択してください

  5. バケットを確認して作成します

  6. API キーに移動します

  7. 「API キーの作成」をクリックし、キーの名前を入力します

  8. キーを確認して作成します

  9. 秘密キーをコピーし、安全な場所に保管してください。

  10. 次に、アクセス キーもコピーします。

コードを書き始めましょう

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 で実行中のサーバー」がログに記録されるはずです。

API のテスト

postman を使用して API をテストします。

How to implement File uploads in Nodejs: A step by step guide

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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート