嗨,在本文中,我們將了解如何在 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}` }); } };
首先,我們匯入@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」。
我們將使用 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 在 Node.js 應用程式中處理檔案上傳。
在下一篇文章中,我將展示如何使用 AWS S3 進行文件上傳,在此之前簽署 - 您的 FII
不用擔心檔案上傳:立即註冊 Apexx Cloud,免費
以上是如何在 Nodejs 中實作檔案上傳:逐步指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!