inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

s3 람다 추가 질문

261

이태희

작성한 질문수 18

0

아래 s3 람다  추가 질문 합니다. 

[이전글]

https://www.inflearn.com/questions/177103

s3 에서 퍼블릭으로 되어있습니다. 아예 thumb로 안올라갑니다. 그런데 어제 테스트했을 때는 올라갔는데 오늘 하려고하니 안들어가네요 

소스와 사진 함께 올립니다.

소스

const express = require('express');
const multer = require('multer');
const path = require('path');
const fs = require('fs');
const AWS = require('aws-sdk');
const multerS3 = require('multer-s3');

const { Post, Hashtag } = require('../models');
const { isLoggedIn } = require('./middlewares');

const router = express.Router();

try {
    fs.readdirSync('uploads');
} catch (error) {
    console.error('uploads 폴더가 없어 uploads 폴더를 생성합니다.');
    fs.mkdirSync('uploads');
}

AWS.config.update({
    accessKeyId: process.env.S3_ACCESS_KEY_ID,
    secretAccessKey: process.env.S3_SECRET_ACCESS_KEY,
    region: 'ap-northeast-2',
});

const upload = multer({
    storage: multerS3({
        s3: new AWS.S3(),
        bucket: 'th-s3-storage',
        key(req, file, cb) {
            cb(null, `original/${Date.now()}${path.basename(file.originalname)}`);
        }
    }),
    limits: { fileSize: 5 * 1024 * 1024 },
});

/*
const upload = multer({
    storage: multer.diskStorage({
        destination(req, file, cb) {
            cb(null, 'uploads/');
        },
        filename(req, file, cb) {
            const ext = path.extname(file.originalname);
            cb(null, path.basename(file.originalname, ext) + Date.now() + ext);
        },
    }),
    limits: { filesSize: 5 * 1024 * 1024 },    
});
*/

router.post('/img', isLoggedIn, upload.single('img'), (req, res) => {
    console.log(req.file);
    /** multer */
    //res.json({ url: `/img/${req.file.filename}` });
    
    /** multer-s3 */
    //res.json({ url: req.file.location });

    /** multer-s3 lamda */
    const originalUrl = req.file.location;
    const url = originalUrl.replace(/\/original\//, '/thumb/');
    res.json({ url, originalUrl });
});

const upload2 = multer();

router.post('/', isLoggedIn, upload2.none(), async (req, res, next) => {
    try {
        const post = await Post.create({
           content: req.body.content,
           img: req.body.url,
           UserId: req.user.id, 
        });

        const hashtags = req.body.content.match(/#[^\s#]+/g);
        if (hashtags) {
            const result = await Promise.all(
                hashtags.map(tag => {
                    return Hashtag.findOrCreate({
                        where: { title: tag.slice(1).toLowerCase() },
                    })
                }),
            );
            await post.addHashtags(result.map(r => r[0]));
        }
        res.redirect('/');
    } catch (error) {
        console.error(error);
        next(error);
    }
});

module.exports = router;

mysql mongodb nodejs Sequelize

답변 1

0

제로초(조현영)

original은 올라가나요?

람다가 trigger가 안 되는 것 같은데, 람다 들어가서 모니터링-로그 보면 에러가 있을 겁니다.

0

이태희

네 origin은 올라가요

리눅스 노드 설치시 패키지

0

159

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

905

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2281

2

a[title] 질문드립니다

0

375

1

리뉴얼 강의 및 공부 방법

0

581

1

jwt decode

0

1128

1

node.js 교과서 3판 질문드립니다

0

391

1

passport와 jwt

0

432

1

리뉴얼 강의

0

417

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

353

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

481

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

505

2

nunjucks res.render('error'); 작동을 안합니다.

0

511

1

질문있습니다.

0

346

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3535

1

수업자료는 어디있나요?

0

366

1

질문 있습니디

0

235

1

multer 사용시 file 외 name값은 못받나용?

0

416

1

코드 중복 부분 질문드립니다.

0

298

1

api 만드는 이유 질문드립니다.

0

286

1

Strategy의 done에 대해 질문드립니다.

0

361

1

안녕하세요 fs 권한 관련 질문드립니다

0

446

1

시퀄라이즈 연결질문...

0

492

2

res.setHeader vs res.cookie

0

1785

3