[AWS] - NodeJS에서 S3 이용하여 이미지파일 업로드하기
1. S3 이용하기 위해서 아래 4개를 알아야 한다(IAM 설정) 'AWS_ACCESS_KEY', 'AWS_SECRET_ACCESS_KEY', 'Bucket', 'REGION' (서울이면 REGION 은 'ap-northeast-2' 이다)
2. NodeJS에서 모듈 2개를 설치해야 한다 - npm install multer --save - npm install aws-sdk --save
3. 코드작성 // app/config/s3.config.js
const AWS = require ( 'aws-sdk' ); const env = require ( './s3.env.js' );
const s3Client = new AWS . S3 ({ accessKeyId: env . AWS_ACCESS_KEY , secretAccessKey: env . AWS_SECRET_ACCESS_KEY , region : env . REGION });
const uploadParams = { Bucket: env . Bucket , Key: '' , // pass key Body: null , // pass file body };
const s3 = {}; s3 . s3Client = s3Client ; s3 . uploadParams = uploadParams ;
module . exports = s3 ;
// app/config./s3.env.js
const env = { AWS_ACCESS_KEY: '액세스 키 입력' , AWS_SECRET_ACCESS_KEY: '비밀 액세스키 입력' , REGION : 'ap-northeast-2' , Bucket: '버킷명 입력' };
module . exports = env ;
// app.js
// s3 위해서(multer와 aws-sdk npm install로 설치) const multer = require ( 'multer' ); var storage = multer . memoryStorage () var upload = multer ({ storage: storage }); const s3 = require ( './app/config/s3.config.js' );
// s3 이미지 업로드 위해서 router . post ( '/api/file/upload' , upload . single ( "file" ), function ( req , res ){ const s3Client = s3 . s3Client ; const params = s3 . uploadParams ; params . Key = req . file . originalname ; params . Body = req . file . buffer ;
console . log ( '파일 이름 내놔 : ' + params . Key );
s3Client . upload ( params , ( err , data ) => { if ( err ) { res . status ( 500 ). json ({ error: "Error -> " + err }); } console . log ( '파일 이름 내놔 : ' + req . file . originalname ); res . json ({ message: 'upload success! -> filename = ' + req . file . originalname }); }); });
// index.ejs // encrtype="multipart/form-data" 안붙이면 'originalname ~' 에러나니 꼭 붙일 것!
< body > < div class = "container" > < h1 > File Upload < form action = "/api/file/upload" method = "POST" enctype = "multipart/form-data" > < div class = "file-field input-field" > < div class = "btn grey" > < span > File < input name = "file" type = "file" > < button type = "submit" class = "btn" > Submit
from http://riucc.tistory.com/536 by ccl(A) rewrite - 2020-03-07 16:20:19
댓글
댓글 쓰기