티스토리 뷰

이 페이지는 aws S3에 이미지를 업로드하는 방법을 설명하고 있다.

 

아래코드를 library에 따로 관리하여 호출하는것이 재사용성을 높이는 좋은 방법이다.

텍스트와 이미지 파일 업로드 함수를 따로 분리하였으니 필요에 따라 사용.

마지막 함수 deleteObject를 이용하여 s3에 있는 이미지도 삭제가능하다.

const fs = require('fs');
const S3 = require('aws').s3;

const errors = require('../libs/errors');

exports.putTextObject = (bucket, key, contentType, body) => new Promise((resolve, reject) => {
    const params = {
        Bucket : bucket,
        Key : key,
        ContentType : contentType,
        Body: body,
        ACL : 'public-read',
    };
    S3.putObject(params, (err, data) => {
    	if (err) return reject(new errors.AWSS3Error());
        return resolve(data);
    });
});

exports.putObject = (bucket, key, contentType, file) => new Promise((resolve, reject) => {
    const fileStream = fs.createReadStream(file.path);
    const params = {
        Bucket : bucket,
        Key : key,
        ContentType : contentType,
        Body: fileStream,
        ACL : 'public-read',
    };
    S3.putObject(params, (err, data) => {
        if (err) return reject(new errors.AWSS3Error());
        return resolve(data);
    });
});

exports.deleteObject = (bucket, key, callback) => new Promise((resolve, reject) => {
    S3.deleteObject({
        Bucket : bucket,
        Key : key,
    }, (err, data) => {
        if (err) return reject(new errors.AWSS3Error());
        return resolve(data);
    });
});

라이브러리에 작성된 코드를 아래의 형식처럼 호출하여 사용할 수 있다

await s3.putObject(bucket, key, 'image/png', file);
댓글
최근에 올라온 글
«   2024/07   »
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
Total
Today
Yesterday