首頁 > web前端 > 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}` });
  }
};
登入後複製

首先,我們匯入@apxxcloud/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,如果一切順利,它應該記錄「Server running at port: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 在 Node.js 應用程式中處理檔案上傳。

在下一篇文章中,我將展示如何使用 AWS S3 進行文件上傳,在此之前簽署 - 您的 FII

不用擔心檔案上傳:立即註冊 Apexx Cloud,免費

以上是如何在 Nodejs 中實作檔案上傳:逐步指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板