local resource
를 가져오려고 시도하면 위와같은 에러가 나왔다.
rust에서 file path를 front
에 넘겨주어 front
에서 동적으로 img
의 src
에 image path를 넘겨주었다.
찾아보니 웹 브라우저에서는 로컬 파일을 직접 로드하는걸 기본적으로 차단한다고 한다.
아직 웹쪽에 정확한 지식이 없어서 이해가 완벽하지는 않지만 찾아낸 방식은 다음과 같다.
base64
크레이트를 활용하여 인코딩해 준 뒤 front쪽으로 넘겨준다.
fn get_image_url(path: &str) -> Result<String, String>{
let mut file = std::fs::File::open(path).map_err(|e| e.to_string())?;
let mut buffer: Vec<u8>= Vec::new();
file.read_to_end(&mut buffer).map_err(|e| e.to_string())?;
let encoded = STANDARD.encode(&buffer);
Ok(format!("data:image/jpg;base64,{}", encoded))
}
위와 같이 data url 형식으로 반환해주는 get_image_url
을 만들어서 사용했다.
결론적으로 정상적으로 local resource로부터 이미지를 보여줄 수 있었다. 그러나 다른 방법도 있는지 추가적으로 공부해야 할 것 같다.
문제점으로는 base64
로 인코딩 후 img
의 src
로 data url을 넘겨줬더니 사진이 좀 깨지는 느낌이다. 이것도 해결해 봐야겠다.