2

ユーザーが画像をアップロードしてどこかに保存できるようにするPythonでGoogleアプリエンジンを使用して簡単なWebアプリを作成しました(今のところ、チュートリアルに基づいてブロブストアを使用しています)。

画像をGoogleクラウドストレージに送信したいのですが、これを行う方法がわかりません。ファイルを開くときに、「a」と「r」の 2 つのモードが用意されています。私の知る限り、どちらもバイナリ ストリーム用ではありません。

画像を Google クラウド ストレージに送信するにはどうすればよいですか? コードのスニペットまたは参照はいいでしょう。小さなオーディオ サンプルと、その他のバイナリ データも送信する予定です。

また、ユーザーが画像を削除したい場合、どうすれば画像を削除できますか? 利用可能な削除方法はないようです。

4

2 に答える 2

4

bigstore にアップロードされた blob を書き込む単純なアップロード ハンドラーを次に示します。bigstore バケットを管理しているチーム アカウントにアプリのサービス アカウントを追加しておく必要があることに注意してください。

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
  def post(self):
    upload_files = self.get_uploads('file')
    blob_info = upload_files[0]
    in_file_name = files.blobstore.get_file_name(blob_info.key())
    infile = files.open(in_file_name)
    out_file_name = '/gs/mybucket/' + blob_info.filename
    outfile = files.gs.create(out_file_name,
                              mime_type = blob_info.content_type)

    f = files.open(outfile, 'a')
    chunkSize = 1024 * 1024
    try:
      data = infile.read(chunkSize)
      while data:
        f.write(data)
        data = infile.read(chunkSize)
    finally:
      infile.close()
      f.close()

    files.finalize(outfile)
于 2012-02-11T08:23:03.673 に答える
2

クラウド ストレージでは、バイナリ ストリームとテキスト ストリームに違いはありません。"a"モードで開いたファイルに文字列 (またはバイト文字列) を書き込むだけです。こちらの指示に従ってください。

また、blobstore から画像を提供している場合は、アプリケーションによって異なりますが、おそらくget_serving_url()from hereを使用した方がよいでしょう。

于 2012-02-11T07:29:44.510 に答える