[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)
動かしたら下記のように表示されます。

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

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

コメントを残す