ファイルをブロブストアにアップロードすると、「s9QmBqJPuiVzWbySYvHVRg==」のような名前に変更されます。その「/serve」URL に移動してファイルをダウンロードすると、ダウンロードされたファイルにはこの文字の寄せ集めの名前が付けられます。
ダウンロードしたファイルをアップロード時に元のファイル名のままにする方法はありますか?
ファイルをブロブストアにアップロードすると、「s9QmBqJPuiVzWbySYvHVRg==」のような名前に変更されます。その「/serve」URL に移動してファイルをダウンロードすると、ダウンロードされたファイルにはこの文字の寄せ集めの名前が付けられます。
ダウンロードしたファイルをアップロード時に元のファイル名のままにする方法はありますか?
元のファイル名を使用してファイルがアップロードBlobUploadHandler
されると、新しく作成されたBlobInfo
エンティティに name プロパティとして保存されます。
BLOB サーブ ハンドラーでは、BLOB をダウンロードの添付ファイルとして返すように指定したり、保存する名前を指定したりできます。
from google.appengine.ext import webapp
import urllib
class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
def get(self, blob_info_key=None):
blob_info_key = str(urllib.unquote(blob_info_key))
blob_info = retrieve_blob_info(blob_info_key)
self.send_blob(blob_info, save_as=blob_info.filename)
blob_app = webapp.WSGIApplication([
('/_s/blob/([^/]+)', blob.ServeHandler),
], debug=config.DEBUG)
参照するコードは BlobInfo エンティティのキーですが、元のファイル名はプロパティとして保存されます。
ファイル名でファイルをダウンロードする簡単な方法が必要な場合は、ServeHandler に使用するこのコードを使用できます。これは私のニーズに合っています。blobstore キーの代わりにファイル名でファイルをダウンロードします。
class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
def get(self, resource):
blobs = blobstore.BlobInfo.gql("WHERE filename = '%s'" %(urllib.unquote(resource)))
if blobs.count(1) > 0:
blob_info = blobstore.BlobInfo.get(blobs[0].key())
self.send_blob(blob_info,save_as=True)
GAE 管理コンソールの BLOB ビューアー セクションで、個々の BLOB を表示すると、下のスクリーンショットに示すように、ビューアーの右下にダウンロード ボタンがあります。