[A-00101]pythonからGCSでアクセスする

pythonのライブラリからGCSにアクセスする方法について記載しておく。

まずはライブラリのインストール

pip install google-cloud-storage

・GCSにアップロードする

UIから選択したファイルをGCSにアップロードする仕組みを作る。

使用するフレームワークはflet。

pip install flet
from flet import (
    Page,
    FilePicker,
    FilePickerResultEvent,
    MainAxisAlignment,
    Row,
    ElevatedButton,
    icons,
    app,
    AlertDialog,
    Text
    
)
from google.cloud import storage as gcs


def main(page: Page):
    # Title
    page.title = "GCS Control"
    
    dlg = AlertDialog(
        title=Text("Uploded!",
                   text_align=MainAxisAlignment.CENTER,
                   expand=True),
        on_dismiss=lambda e: print("Dialog dismissed!")
    )
     
    def pick_files_result(e: FilePickerResultEvent):
        gcsClient = gcs.Client(project="<project_id>")
        bucket = gcsClient.get_bucket("<bucket_name>")
        blob = bucket.blob(e.files[0].name)
        blob.upload_from_filename(e.files[0].path)
        open_dlg(None)
        
    def open_dlg(e):
        page.dialog = dlg
        dlg.open = True
        page.update()
    
    pick_files_dialog = FilePicker(on_result=pick_files_result)
    page.overlay.append(pick_files_dialog)
    page.vertical_alignment = MainAxisAlignment.CENTER
    page.horizontal_alignment = MainAxisAlignment.CENTER
  
    # Rowオブジェクト追加(1段目)
    row_file_picker1 = Row(vertical_alignment=MainAxisAlignment.CENTER, 
                           alignment=MainAxisAlignment.CENTER)
    row_file_picker1.controls.append(
        ElevatedButton(
            "Upload Files",
            icon=icons.UPLOAD_FILE,
            on_click=lambda _: pick_files_dialog.pick_files(
                        allow_multiple=False
                    ),
        )
    )
    
    # RowコンポーネントをPageに追加
    page.add(row_file_picker1)
    

app(target=main)

動かしたら下記のように表示されます。

アップロードが完了するとダイアログ表示(文字が中央からずれている)。

バケットには下記のように追加されます。

・GCS上のファイルを削除する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*