image url을 file object로 변경하기 위해서 구글링을 해봤는데 생각보다 간단하게 했다.
export const convertURLtoFile = async (url: string) => {
const response = await fetch(url);
const data = await response.blob();
const ext = url.split(".").pop(); // url 구조에 맞게 수정할 것
const filename = url.split("/").pop(); // url 구조에 맞게 수정할 것
const metadata = { type: `image/${ext}` };
return new File([data], filename!, metadata);
};
위의 함수를 사용하면 File object로 변경된다.
filename, ext를 구하기 위해서 저렇게 한 이유는 url의 형태가 http://abc.com/filename.ext
이기 때문에 split('/')
을 사용해서 문자열을 분리하고, 마지막 요소를 가져오면 filename이 된다.
array.length-1
을 이용해서 마지막 요소를 가져오면 변수가 1~2개가 증가해서 pop
메소드를 사용했다. 물론 undefined가 리턴되기 때문에 File
생성자에서 filename에 !
를 사용해서 undefined가 되는 경우를 무시했다. url 자체가 잘못되는 경우가 없기 때문이다.
안녕하세요 올려주신 글이 너무 도움이 되었습니다. 한가지 질문이 있습니다. 파일로 만들고나서 서버에 올리면 해당 파일이 empty가 나는데 왜그런지 아시나요??