> 웹 프론트엔드 > JS 튜토리얼 > Nodejs에서 파일 업로드를 구현하는 방법: 단계별 가이드

Nodejs에서 파일 업로드를 구현하는 방법: 단계별 가이드

Patricia Arquette
풀어 주다: 2025-01-03 01:36:39
원래의
861명이 탐색했습니다.

소개

안녕하세요. 이 글에서는 nodejs 서버에서 파일 업로드를 처리하고 모범 사례에 따라 저장하는 방법을 살펴보겠습니다. 파일 저장 서비스로 Apexx cloud를 사용할 예정입니다.

패키지 설치

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 cloud에 로그인하거나 여기에서 새 계정을 만드세요

  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, 모든 것이 제대로 되었다면 "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를 사용하여 nodejs 애플리케이션에서 파일 업로드를 처리하는 방법을 성공적으로 설명했습니다.

다음 기사에서는 파일 업로드에 AWS S3를 사용하는 방법을 보여드리겠습니다. 그때까지 로그오프 - 귀하의 FII

파일 업로드에 대해 걱정하지 마세요. 지금 Apexx Cloud에 가입하세요. 무료입니다

위 내용은 Nodejs에서 파일 업로드를 구현하는 방법: 단계별 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿