7

だから私はdjangoアプリケーションをappengineで起動して実行し、ユーザーがファイルをアップロードしたときにファイルを作成するようにしました。私が抱えている問題は、それらを削除する方法を見つけようとしていることです。それらを作成するための私のコードは次のようになります。

from google.appengine.api import files

file = request.FILES['assets_thumbnail']
filename = '/gs/mybucketname/example.jpg'
writable_file_name = files.gs.create(filename, mime_type='image/jpeg', acl='public-read')
with files.open(writable_file_name, 'a') as f:
    f.write(file.read())
files.finalize(writable_file_name)

これは正常に機能しますが、次のドキュメントにあります。

https://developers.google.com/appengine/docs/python/googlestorage/functions

削除メソッドがリストされていません。ただし、以下のリンク(504行目)でgoogle.appengine.api.filesの実際のソースを確認すると

http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/files/file.py

呼び出すことができるdeleteメソッドがありますが、それが必要とする引数を正確に理解することはできません。バケット名などといろいろ組み合わせてみました。/ blobstore /で開始したいようです。これは、クラウドストレージとやり取りするときにこれまでに行ったこととは異なります。google.appengine.api.filesがその上に記述されている基になるblobstoreクラスを調べてきましたが、それでもアイテムを削除する方法を正確に理解することはできません。アップロードしたアイテムのBlobKeyを見つける必要があるようです。googleがホストするWebベースのバケットマネージャーと、それらが提供するgsutilコマンドラインユーティリティを使用して、それらを正常に削除できます。

アプリエンジンにデプロイされたPythonアプリを介してGoogleクラウドストレージからファイルを正常に削除した人はいますか?手がかり/考え/アイデアは大歓迎です。

4

3 に答える 3

7

AppEngine リリース 1.7.0 では、blobstore API を使用した Google Storage オブジェクトの削除がサポートされています。

key = blobstore.create_gs_key('/gs/my_bucket/my_object')
blobstore.delete(key)

または、REST API を使用して Google Storage を呼び出し、ファイルを削除することもできます。

https://developers.google.com/storage/docs/reference-methods#deleteobject

于 2012-05-12T22:13:29.547 に答える
-2

GCS からオブジェクトを削除することは非常に危険です。そのようなタスクに着手する前にベスト プラクティスを読んでください。それ以外の場合は、次の手順に従ってください。

    from google.cloud import storage 
    # bucket_name = "your-bucket-name"
    # blob_name = "your-object-name"   
    storage_client = storage.Client()

    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(blob_name)
    blob.delete()

    print("Blob {} deleted.".format(blob_name))
于 2021-08-05T11:07:06.193 に答える