클라이언트 사이드에서 s3 이미지를 미리 업로드 한 후 수정하는 api로 해당 uri를 전달하려는 목적
사용된 s3upload function
interface S3UploadProps {
imageFile: Asset; //
uri: string; // 이미지 uri
fileName: string;
}
const useUpload = () => {
const S3Upload = async ({imageFile, fileName, uri}: S3UploadProps) => {
const REGION = AWS_REGION;
const ACESS_KEY_ID = AWS_ACESS_KEY_ID;
const SECRET_ACCESS_KEY_ID = AWS_SECRET_ACCESS_KEY_ID;
AWS.config.update({
region: REGION,
accessKeyId: ACESS_KEY_ID,
secretAccessKey: SECRET_ACCESS_KEY_ID,
});
const formName = uuid.v5(fileName, String(new Date().getTime()));
const filExt = fileName.split('.').pop();
const fileContent = await RNFS.readFile(imageFile.uri!, 'base64');
const upload = new AWS.S3.ManagedUpload({
params: {
ACL: AWS_ACL, // ex) public_read
Bucket: AWS_Bucket, // ex) 해당 s3 stroage의 버킷 이름
Key: `user/${dayjs().format('YYYY-MM-DD')}/${formName}.${filExt}`,
Body: Buffer.from(fileContent, 'base64'),
ContentType: imageFile.type,
},
});
upload
.promise()
.then(res => {
console.log('업로드 성공!', res);
})
.catch(err => {
console.warn('s3 upload err : ', err);
});
};
return {S3Upload};
};