~4.4까지의 강의
4강 나중에 다시 들을 것
이제 버킷에 업로드해보자.
사진을 업로드할건데 사진이 있으면 url을 받아 그걸 nweet에 추가하는 것이다.
사진이 있으면 사진을 올리고 url을 받아 nweet에 넣는다.
파일 url을 넣는 것을 한다.
그 전에 fbase.js로 가서,
export const storageService = firebase.storage();
Home.js
import { v4 as uuidv4 } from "uuid";
import { dbService, storageService } from "fbase";
const onSubmit = async (event) => {
event.preventDefault();
const fileRef = storageService.ref().child(`${userObj.uid}/${uuidv4()}`);
const response = await fileRef.putString(attachment, "data_url");
console.log(response);
};
userObj.uid 밑에 파일 이름을 랜덤하게 생성하고 싶다면,
npm install uuid
이제 파일을 갖게 되었다. 아무것도 업로드하지 않았으니까 파일에 대한 reference를 만들어 주는 것 뿐이다.
이제 다시 reference로 들어가서 업로드나 다운로드 할 수 있다.
public url을 다운 받아서 링크로 연결시켜 보자.
Home.js
const onSubmit = async (event) => {
event.preventDefault();
let attachmentUrl = "";
if (attachment != "") {
const attachmentRef = storageService
.ref()
.child(`${userObj.uid}/${uuidv4()}`);
const response = await attachmentRef.putString(attachment, "data_url");
attachmentUrl = await response.ref.getDownloadURL();
}
const nweetObj = {
text: nweet,
createdAt: Date.now(),
creatorId: userObj.uid,
attachmentUrl,
};
await dbService.collection("nweets").add(nweetObj);
setNweet("");
setAttachment("");
};
달라진 점에 주목을 해보자.
getDowmloadURL을 사용하기 위해 문법을 살짝 바꾸었다.
Nweet.js
{nweetObj.attachmentUrl && (
<img src={nweetObj.attachmentUrl} width="50px" height="50px" />
)}
사진을 지우는 것을 알아보자.
Nweet.js
const onDeleteClick = async () => {
const ok = window.confirm("Are you sure you want to delete this nweet?");
if (ok) {
await dbService.doc(`nweets/${nweetObj.id}`).delete();
await storageService.refFromURL(nweetObj.attachmentUrl).delete();
}
};
코드 한 줄만 추가하면 쉽게 삭제할 수 있다.
'Web Service > React' 카테고리의 다른 글
[트위터 클론 코딩] #9. Finishing up! (0) | 2022.05.06 |
---|---|
[트위터 클론 코딩] #8. Edit (0) | 2022.05.06 |
[트위터 클론 코딩] #6. Preview Images (0) | 2022.04.03 |
[트위터 클론 코딩] #5. Nweeting-Update, Delete (0) | 2022.04.02 |
[트위터 클론 코딩] #4. Nweeting-Create, Read (0) | 2022.04.01 |
댓글