rust tauri 로컬 이미지 로드 에러

wangki·2025년 1월 30일
0

Rust

목록 보기
9/54

문제 발생

local resource를 가져오려고 시도하면 위와같은 에러가 나왔다.
rust에서 file path를 front에 넘겨주어 front에서 동적으로 imgsrc에 image path를 넘겨주었다.

찾아보니 웹 브라우저에서는 로컬 파일을 직접 로드하는걸 기본적으로 차단한다고 한다.

해결 방법

아직 웹쪽에 정확한 지식이 없어서 이해가 완벽하지는 않지만 찾아낸 방식은 다음과 같다.

  1. local resource를 rust(백엔드)에서 읽어 온다.
  2. 읽어온 데이터를 base64 크레이트를 활용하여 인코딩해 준 뒤 front쪽으로 넘겨준다.
  3. front에서 넘겨받은 data url을 통해서 화면에 image를 보여준다.

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로 인코딩 후 imgsrc로 data url을 넘겨줬더니 사진이 좀 깨지는 느낌이다. 이것도 해결해 봐야겠다.

0개의 댓글