일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- redis
- php
- JVM
- Spring Batch
- db
- 요리
- it
- AWS
- Git
- jsp
- java
- javascript
- IntelliJ
- 맛집
- Web Server
- Gradle
- Design Patterns
- laravel
- tool
- elasticsearch
- ReactJS
- springboot
- linux
- devops
- Spring Boot
- Spring
- ubuntu
- MySQL
- jenkins
- Oracle
Archives
- Today
- Total
아무거나
NodeJS 를 사용하여 S3 에 File upload (파일 업로드) 기능 구현 본문
반응형
S3 에 File Upload 기능 구현
- 라이브러리 설치
$ npm install multer $ npm install aws-sdk
- File Upload Util
const fs = require("fs") const path = require("path") const multer = require("multer") /** * Save For File Upload (Use Multer Module) */ export const saveForFileUpload = multer({ storage: multer.diskStorage({ destination(req, file, done) { const dirPath = path.resolve("./") + "\\uploads" if (!fs.existsSync(dirPath)) { fs.mkdirSync(dirPath, { recursive: true }) } done(null, "uploads/") }, filename(req, file, done) { // 파일명을 어떤 이름으로 올릴지 const ext = path.extname(file.originalname) // 파일의 확장자 done(null, path.basename(file.originalname, ext) + "_" + Date.now() + ext) }, }), limits: { fileSize: 5 * 1024 * 1024 }, // 파일 사이즈 설정 })
- S3 File Upload Util
const fs = require("fs") const AWS = require("aws-sdk") export const s3FileUpload = async (reqFile) => { const result = new Object() AWS.config.update({ accessKeyId: {accessKeyId}, secretAccessKey: {secretAccessKey}, region: "ap-northeast-2", }) const s3 = new AWS.S3() const fileContent = fs.readFileSync(reqFile.path) const param = { Bucket: {bucket path}, Key: reqFile.filename, ACL: "public-read-write", Body: fileContent, ContentType: reqFile.mimetype, } try { const data = await s3.upload(param).promise() result.file = param result.uploadResult = data result.reqFile = reqFile } catch (err) { console.log(err) } return result }
- API 생성
// File 은 formdata 형식으로 uploadFile 값으로 넘김 app.post( `fileUpload`, saveForFileUpload.single("uploadFile"), async (req, res) => { await s3FileUpload(req.file) } )
반응형
'Javascript & HTML & CSS > NodeJS' 카테고리의 다른 글
log4js-node 로그 라이브러리 적용 (0) | 2024.01.17 |
---|---|
node-schedule 을 활용한 스케쥴러 구현 (0) | 2022.12.02 |
[NodeJS] CSV File 을 JSON 으로 변환 (CSV to JSON) (0) | 2022.12.02 |
Comments