В функции send_blob есть необязательный параметр 'save_as'. По умолчанию это установлено в False. Если установить значение True, файл будет рассматриваться как вложение (т. Е. Он вызовет диалог загрузки «Сохранить / Открыть»), и пользователь увидит правильное имя файла.
Пример:
class ServeHandler(blobstore_handlers.BlobstoreDownloadHandler):
def get(self, resource):
resource = str(urllib.unquote(resource))
blob_info = blobstore.BlobInfo.get(resource)
self.send_blob(blob_info,save_as=True)
Также возможно перезаписать имя файла, передав строку:
self.send_blob(blob_info,save_as='my_file.txt')
Если вы хотите, чтобы какой-то контент (например, pdf) открывался, а не сохранялся, вы можете использовать content_type для определения поведения:
blob_info = blobstore.BlobInfo.get(resource)
type = blob_info.content_type
if type == 'application/pdf':
self.response.headers['Content-Type'] = type
self.send_blob(blob_info,save_as=False)
else:
self.send_blob(blob_info,save_as=True)