如何从GAE的blobstore下载原始文件名的文件?

ken*_*ong 4 google-app-engine filenames http-headers blobstore

将文件上传到blobstore后,它会将其重命名为"s9QmBqJPuiVzWbySYvHVRg ==".如果您导航到其"/ serve"URL以下载文件,则下载的文件将被命名为这个混乱的字母.

有没有办法让下载的文件在上传时保留其原始文件名?

tza*_*dor 6

使用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)
Run Code Online (Sandbox Code Playgroud)