[AWS] - NodeJS에서 S3 이용하여 이미지파일 업로드하기
AWS클라우드2018. 12. 4. 11:41
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
○ 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</h1> <form action="/api/file/upload" method="POST" enctype="multipart/form-data"> <div class="file-field input-field"> <div class="btn grey"> <span>File</span> <input name="file" type="file"> </div> </div> <button type="submit" class="btn">Submit</button> </form> </div> </body> |
'AWS클라우드' 카테고리의 다른 글
[AWS] - S3에 올린 파일 접근하기 (0) | 2018.12.04 |
---|---|
[AWS] - S3 이용하기 위한 IAM 설정하기 (0) | 2018.12.04 |
[AWS] - JSP Servlet에서 S3 사용한 파일명과 다른 변수 데이터들 가져오기 (0) | 2018.10.17 |
[AWS] - EC2, EIP 과금, 요금발생 조심 (0) | 2018.05.28 |
[AWS] - IAM, DynamoDB, ELB, 단일 장애 지점 방지 (0) | 2017.11.13 |
댓글()