2

私は最近google-cloud client の使用を開始し、この小さな例を作成しました (わかりやすくするために省略/変更しました):

<form id="testform" method="post" enctype="multipart/form-data">
  <p>
    <div>
      <label for="fotos">Some file</label>
    </div>
    <div>
      <input type="file" name="testfile">
    </div>
  </p>
  <input type="submit" value="Submit">
</form>
from google.cloud import storage

class MyHandler(BaseHandler):
    def get(self):
        self.render("test.html")

    def post(self):
        file = self.request.POST["testfile"]
        filename = file.filename # + TimeStamp

        bucket = storage.Client().get_bucket(self.get_bucket_name())
        blob = bucket.blob(filename)

        blob.upload_from_string(data=file.file.read(),
                                content_type=file.type)

        self.write(blob.public_url)

このコードは 32 MB 未満であれば問題なく動作しますが、大きなファイルは GCS に直接ではなくアプリを経由するため、処理できません。Blobstore API を使用したソリューションを見たことがありますが、それらは古く、Blobstore はデータを保存するためにも使用されていません (ただし、Blobstore API は引き続き使用できます)。

google-cloud クライアントを使用してこれを修正する方法はありますか? docsでアップロード URL を作成する方法を見たことがありません。

4

1 に答える 1