首页 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板