[ruby] Google Firebase Storage를 간편하게 사용하는 방법

Spark 플랜 무료 프레임 스토리지



htps : // 푹 빠져라. 오, ぇ. 코 m / p 리신 g


프로젝트 ID





버킷 ID



여러 개의 버킷이 없으므로 여기에 표시되는 도메인 이름이 있습니다 ( gs://


코드 샘플 등




  • 링크
  • 링크
  • 링크

  • storage
    storage = Google::Cloud::Storage.new(project_id: ENV["FIREBASE_PROJECT_ID"])
    

    버킷
    bucket = storage.bucket ENV["FIREBASE_STORAGE_BUCKET_ID"]
    

    파일 추가
    bucket.create_file "/path/to/file" # バケットのルートに置く
    bucket.create_file "/path/to/file", "folder/name/file" # バケットのサブフォルダに置く
    
    # metadataを付けて置く(後で説明するpublic_urlで必要になる)
    # tokenはぶつからない、推測されにくいものであれば何でも良さそう
    require "active_support/all"
    bucket.create_file "/path/to/file", metadata: { firebaseStorageDownloadTokens: SecureRandom.uuid }
    

    파일 참조
    files = bucket.files # 全部
    
    # Signature: find_files(prefix:?, delimiter:?, token:?, max:?, versions:?)
    # 例 a/b/c_d_e.jpg というファイルがあった場合、
    # bucket.find_files prefix: "a/b/c_" で見つけられる path.start_with? 的な
    files = bucket.find_files prefix: "folder/sub/prefix"
    
    file = bucket.file("path/to/file") # 直接ファイル1つ
    

    업데이트
    bucket.create_file "/path/to/file1", "folder/sub/file" 
    bucket.create_file "/path/to/file2", "folder/sub/file"  # 同じところに同じ名前で置く
    

    삭제
    file.delete
    

    누구나 액세스할 수 있는 URL
    file.signed_url # => デフォルトで5分間の公開が可能
    file.signed_url expires: 1.hour.to_i # => 1時間の公開が可能、最大で7日間
    

    Signed URL example

    X-Goog-Expires: The length of time the signed URL remained valid, measured in seconds from the value in X-Goog-Date. In this example the Signed URL expires in 15 minutes. The longest expiration value is 604800 seconds (7 ).

    누구나 액세스할 수 있는 URL(영구)
    def public_url(file)
      # more like permanent
      URI(
        "https://firebasestorage.googleapis.com/v0/b/#{CGI.escape file.bucket}/o/#{CGI.escape file.name}",
      ).tap do |uri|
    
        uri.query = {
          token: file.metadata["firebaseStorageDownloadTokens"],
          alt: :media,
        }.to_query
      end
    end
    

    여기서 firebaseStorageDownloadTokens가 필요하므로 파일을 넣을 때 metadata를 지정해야합니다.
    (javascript에서 라고 업로드한 파일의 downloadUrl 가 메소드로서 제공되고 있지만, ruby라면 아직 없다?)

    Qiita
    How to Access and Download Files in Cloud Storage

    좋은 웹페이지 즐겨찾기