Flutter로 캐시에 저장된 파일 열기

2281 단어 S3Flutter

about



「Flutter로 단말의 캐시 영역에 저장한 파일을 여는 방법」이 발견되지 않고 고생했기 때문에 정리했습니다
  • Android/iOS 앱용 캐시 영역에 파일 저장
  • 터미널 기본 뷰어에서 열기
  • path_provider 로 패스를 얻고 open_file 로 열면 OK였습니다.

    경위



    구현의 문맥은 이하
  • 요구사항
  • AWS S3에 업로드 한 PDF를 기기에 저장할 때 원본 파일 이름으로 만들고 싶습니다


  • 문제
  • S3로 올렸을 때 무작위 파일 이름이됩니다
  • 그대로 열면 무작위 이름으로 저장됩니다


  • 해결안
  • 한 번 캐시 영역에 지정된 이름으로 저장
  • 그 파일을 열면 단말의 PDF Viewer로 저장했을 때도 파일명의 핸들링이 가능
  • (URL을 PDF Viewer에 전달하는 것과 달리 다운로드가 완료 될 때까지 열 수 없습니다.)


  • 샘플



    샘플 프로젝트는 다음
    htps : // 기주 b. 코 m / 꽤 3 / ぇ _ an d_ 오 펜 _ 도쿠 멘 t_f ぅ

    path_provider의 샘플 앱에 이번 요구 사항을 추가한 형태로 되어 있습니다.



    방법


    open_file 사용하면 괜찮습니다.
    htps // 푸 b. V / Pac 가게 s / Open_Fue

    url_launcher에서 열려고했습니다.

    OpenFile.open()에서 경로를 전달하면 OS에 따라 적절하게 해석해줍니다.
    type 및 uti 옵션을 붙일 수도 있습니다.

    힘든 일



    url_launcher가 내부 영역에 대한 액세스를 지원하지 않았습니다.



    URL을 전달하고 뷰어를 열 때 사용했기 때문에 url_launcher에서 확인했습니다.
    저장한 패스를 건네주어 검증하고 있었습니다만, 반드시 예외에 들어가는 것 같습니다.
    ※ 잘 설정하면 file://이나 contents://로 액세스 할 수있는 방법이있을지도

    Android/iOS 모두를 지원하고 싶습니다.



    결과적으로 path_provider를 사용하면
    OS마다 메소드 채널을 쓰려고 했다.

    시행 착오 중에는 다양한 보존 대상을 시도해야했습니다.



    캐시 영역에 저장할 수는 있지만 읽기가 잘못되었기 때문에/sdcard/ 이하에 보존하는 것도 생각했다. (Android)
    이 경우 권한 관리와 iOS 분기가 필요합니다.
    또, 열람한 것만으로 보존까지 되어 버리므로 삭제가 필요하게 된다.



    구구리 힘이 부족해서 하루 녹아 버렸다.
    기존 프로젝트에서 여러 가지 시도 비용을 견딜 수 없기 때문에,
    샘플 프로젝트를 만들어 모든 패턴 자동으로 시도했습니다.

    좋은 웹페이지 즐겨찾기