Express+AWS 3イメージのアップロード
1.AWS 3欄
AWS Simple Storage Service(S3)
オブジェクトストレージサービス.データをパケット内のオブジェクトとして格納します.
バケツ
AWS 3に格納されているオブジェクトのコンテナ
-bucket名はパケット命名規則に従う必要があります.
オブジェクト
S 3に記憶されているデフォルトオブジェクト
オブジェクトは、オブジェクトデータとメタデータで構成されます.
-メタデータ:オブジェクトの名前を記述する-値ペアのセット(ex.content-typeなどの標準HTTPメタデータのような前回の変更日と同じデフォルトメタデータ)
-標準HTTPメタデータ:
オブジェクトはキー(名前)とバージョンIDで識別されます.
Webサービス・エンド・ポイント、パケット名、鍵、バージョンの組み合わせにより、アドレスを一意に指定できます.
ex)アメリカ西部地域で生成された
DOC-EXAMPLE-BUCKET
というパケットに格納されているphotos/puppy.jpg
というオブジェクトのURLはhttps://DOC-EXAMPLE-BUCKET.s3.us-west-2.amazonaws.com/photos/puppy.jpg
であるすなわち
https://[버킷 이름].s3.[리전 이름].amazonaws.com/[키]
バージョン管理
S 3バージョン制御を使用すると、同じパケット内で複数のオブジェクトを変形することができ、検索および復元することができる.
S 3アクセスポイント
アクセス可能なデータのネットワーク・エンド・ポイント
利子
パケットを格納する地理的位置AWS領域
2.AWS 3パケットの作成
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/create-bucket-overview.html
3.AWS 3へのアクセス
3-1)パッケージのインストール
3-1)パッケージのインストール
multer-s3
-ファイルをアップロードするmultipart/form-dataを処理するノード.jsの中装AWS-SDK
:これらのライブラリは、プログラミング制御AWSの便利さを提供します.これはREST APIをパッケージする形態です.npm install aws-sdk multer-s3
3-2)S 3設定ファイルの作成
// s3.json
{
"accessKeyId": "엑세스 키",
"secretAccessKey": "시크릿 엑세스 키",
"region": "ap-northeast-2"
}
//imgAPI.ts
import multerS3 from 'multer-s3';
import aws from 'aws-sdk';
// aws config 파일 읽기
aws.config.loadFromPath('s3.json');
// s3 객체 생성
const s3 = new aws.S3();
// multer 에 대한 설정값
const awsUpload = multer({
storage: multerS3({
s3: s3,
bucket: 'bevelog-bucket', // 객체를 업로드할 버킷 이름
acl: 'public-read', // Access control for the file
key: function (req, file, cb) { // 객체의 키로 고유한 식별자 이기 때문에 겹치면 안됨
cb(null, Math.floor(Math.random() * 1000).toString() + Date.now() + '.' + file.originalname.split('.').pop());
}
}),
});
3-3)アップロードイメージ
router.post('/images/:username/thumbnail', awsUpload.single('thumbnail'), (req, response) => {
// 코드 중략
})
multer.single(fileName)
:filenameというファイルリクエストを受信します.ファイルに保存し、次の(next()に渡します.クエリ
req.file
の場合、locationプロパティにはbucketに格納されているオブジェクトのURLが含まれます.ここまで、bucketに画像がアップロードされているのが見えます.
その後、S 3パケットに格納された画像をクライアントに送信するためには、
THUMBNAIL_IMAGES
テーブルを生成し、パケットに格納されたオブジェクトをインポートするための情報を格納する必要がある.したがって、
THUMBNNAIL_IMAGES
tableに挿入する情報は、次のとおりです.INSERT INTO public."THUMBNAIL_IMAGES" ('id','fk_user_name', 'path', 'file_size')
VALUES (`${req.file.key}`, `${req.params.username}`, `${req.file.location}`, `${req.file.size}`)
Reference
この問題について(Express+AWS 3イメージのアップロード), 我々は、より多くの情報をここで見つけました https://velog.io/@yeogenius/AWS-S3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol