안녕하세요. 이 글에서는 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 cloud에 로그인하거나 여기에서 새 계정을 만드세요
버킷으로 이동합니다.
'버킷 만들기'를 클릭하고 버킷의 고유한 이름을 입력하세요.
원하는 지역을 선택하세요
버킷 검토 및 생성
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}` }); } };
먼저 @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"이 기록되어야 합니다.
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를 사용하여 nodejs 애플리케이션에서 파일 업로드를 처리하는 방법을 성공적으로 설명했습니다.
다음 기사에서는 파일 업로드에 AWS S3를 사용하는 방법을 보여드리겠습니다. 그때까지 로그오프 - 귀하의 FII
파일 업로드에 대해 걱정하지 마세요. 지금 Apexx Cloud에 가입하세요. 무료입니다
위 내용은 Nodejs에서 파일 업로드를 구현하는 방법: 단계별 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!