해결된 질문
작성
·
108
0
graphql-upload 버전 13.0.0으로 강의와 똑같이 맞춰줬는데도 에러가납니다 ㅠ_ㅠ
혹시 해결방안이있을까요?
계속 검색중인데 힘드네유..
혹시나 제가 해결했다면 해결했다고 댓글달겠습니다
해결했다는 댓글이 없으면 계속해서 트라이중인거니 댓글로 도와주시면 너무 감사하겠습니다
답변 2
0
0
해결했습니당.
강의에서는 구글스토리지를 사용했지만
저는 복습겸 다시 처음부터 만들면서 aws s3를 만들었습니다.
그러다보니 적용하는 코드도 좀 달라졌구요
const { createReadStream, filename } = await file;
이렇게 await을 붙여야만 createReadStream를 가져올 수 있네요..
아마 강의코드도 비슷할꺼라 생각합니다.
저의 전체 코드입니당.
import { Injectable } from '@nestjs/common';
import * as AWS from 'aws-sdk';
import { IFilesService } from './interfaces/files-service.interface';
import { v4 as uuidv4 } from 'uuid';
@Injectable()
export class FilesService {
private readonly s3: AWS.S3;
constructor() {
AWS.config.update({
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
region: process.env.AWS_REGION,
});
this.s3 = new AWS.S3();
}
async upload({ files }: IFilesService): Promise<string[]> {
const uploadPromises = files.map(async (file) => {
const { createReadStream, filename } = await file;
const stream = createReadStream();
const params = {
Bucket: process.env.AWS_BUCKET_NAME,
Key: `${uuidv4()}/${filename}`,
Body: stream,
};
console.log('params:', params);
const res = await this.s3.upload(params).promise();
console.log(`File: ${filename} uploaded successfully`);
return res.Location;
});
const response = await Promise.all(uploadPromises);
return response;
}
}