使用 Google App Engine Blobstore 下载的文件名

2024-01-07

我正在使用 Google App Engine Blobstore 来存储一系列文件类型(PDF、XLS 等),并尝试找到一种机制,通过该机制可以使用上传文件的原始文件名(存储在 blob_info 中)来命名下载的文件,即用户在保存对话框中看到“some_file.pdf”而不是“very_long_db_key.pdf”。

我在文档中看不到任何允许这样做的内容:

http://code.google.com/appengine/docs/python/blobstore/overview.html http://code.google.com/appengine/docs/python/blobstore/overview.html

我在其他帖子中看到过提示,您可以使用 blob_info 中的信息来设置内容处置标头。这是实现预期目标的最佳方法吗?


send_blob 函数中有一个可选的“save_as”参数。默认情况下,该值设置为 False。将其设置为 True 将导致文件被视为附件(即,它将触发“保存/打开”下载对话框),并且用户将看到正确的文件名。

Example:

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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Google App Engine Blobstore 下载的文件名 的相关文章

随机推荐

  • UnicodeDecodeError:“ascii”编解码器无法解码位置 0 中的字节 0xe0:序数不在范围内(128)

    在我的一台机器上 当我使用 google apps engine 或 django 时 出现错误 例如 app yaml application demas1252c version 1 runtime python api version
  • ionic v3 中的自定义组件

    我想创建一个简单的组件并将其包含在页面上 我用它创建了ionic g component my header ionic cli v3 beta 修复了IonicPageModule bug 然后添加到另一个页面 然后我得到这个错误 Err
  • 我应该多久关闭一次数据库连接?

    目前 我正在应用程序的初始化中打开数据库连接 这是一个相当小的应用程序 PHP 如果相关的话 我是否应该连接到数据库 进行调用 然后关闭并为我编写的每个数据库函数重复此过程 例如 我有以下函数 它从我的应用程序的初始化中获取 db 变量 f
  • 导入错误:Linux Ubuntu 上没有名为 sceneDetect 的模块

    我正在尝试在 python 上使用 pysceneDetect 库来播放视频 但在使用 python 界面时出现此错误 并且在使用命令行界面时出现错误 ModuleNotFoundError 没有名为 cv2 的模块 即使我相信我根据文档正
  • 如何使用我的实体框架代码忽略 DbUpdateConcurrencyException?

    有什么方法可以告诉 EF 不要担心行数DELETE or UPDATE做还是不做 我试图从数据库中删除一行 但由于该行不存在 EF 抛出异常 DbUpdateConcurrencyException 说0 行受到影响 这是正确的 gt 没有
  • 在 Woocommerce 中选择的运输方式更改时显示或隐藏 html 元素

    我正在尝试根据所选的运输方式显示 隐藏结账页面中的一些元素 我试图显示 隐藏的页面元素来自另一个插件 因此我尝试更改它们的显示属性 我看过很多线程 例如 根据 Woocommerce 3 中的运输方式显示或隐藏结帐字段 https stac
  • C++ STL 迭代器接口

    我知道STL库使用不同类型的迭代器来遍历他的容器 输入 输出 正向 双向和随机访问 我还知道迭代器抽象了经典的 C 指针接口 因此迭代器类必须具有 运算符等 以充当指针 每种迭代器的接口是否都以某种规范编写 这个接口只是 STL 库中使用的
  • 在 os.path.isfile() 中使用通配符

    我想检查一下是否有 rar目录中的文件 它不需要是递归的 使用通配符os path isfile 这是我最好的猜测 但它不起作用 那我能做什么呢 glob http docs python org library glob html就是你所
  • float 到 int 意外行为

    您能解释一下这个程序的 O P 行为吗 int main float a 12 5 printf d n a printf d n int a return 0 您可以检查一下代码吗http codepad org AQRlAzkC htt
  • 是否可以按插入/访问的顺序迭代番石榴缓存?

    我正在尝试使用 Guava Cache 作为替代品并发链接哈希映射 https code google com p concurrentlinkedhashmap 然而我发现 虽然 ConcurrentLinkedHashMap 允许我按插
  • List 为何不实现 Add(object value)?

    我认为这是相当愚蠢的 我有点不好意思问这样的问题 但我仍然找不到答案 我正在看班级List
  • 在黑色和蓝色之间切换 NSToolbarItem

    我想制作一个带有自定义图像的 NSToolbarItem 该图像在黑色和蓝色之间切换 就像 Xcode 5 主窗口右上角的图标一样 Peter Hosey 在这个答案中建议 这就像将图像设置为模板一样简单 https stackoverfl
  • 更改应用程序主题后,材质组件主题对话框按钮变得浮肿

    今天我正在尝试新的材质组件 其安装的一部分是您需要更改应用程序的父级以从 Theme MaterialComponents 继承 所以我这样做是因为我想使用具有更好波纹的底部导航 但在那之后 应用程序中的几乎所有按钮都变得更加浮肿 我应该怎
  • javascript osc 库?

    是否存在用于 JavaScript 的开放声音控制库 我似乎找不到任何这方面的信息 在我的客户端实现KievII http kievii net index html图书馆 这是一个链接code https github com janes
  • 在 Python 中使用 lambda

    我正在尝试使用 lambda 对列表进行排序 我想做的是根据坐标与初始位置的曼哈顿距离对坐标进行排序 我知道我已经掌握了大部分语法 但似乎我遗漏了一些小东西 谢谢 while len queue gt 0 queue sort queue
  • Django:在 Django Admin 中过滤或显示模型方法

    我有一个带有到期日期字段的模型 我想设置一个管理过滤器 允许用户在 未过期 和 任何 之间切换 模型方法是相当简单的日期比较 没问题 然而 在 AdminForm 中将其分配为字段或过滤器参数并不是自动的 这样的事情可能吗 如果不可能 明智
  • OpenCV:如何使用5点算法根据来自不同相机的两个图像之间的特征匹配来计算基本矩阵?

    基本上我想做与此功能相同的事情 https docs opencv org master d9 d0c group calib3d html ga13f7e34de8fa516a686a56af1196247f https docs ope
  • HTML5 / js - 如何为两个坐标之间的直线设置动画?

    足够简单的问题 可能是错的 我希望使用 HTML5 和 或 Jquery 在直线上的两点之间制作动画 ctx beginPath ctx moveTo 0 0 a ctx lineTo 100 100 b ctx stroke http j
  • 如何设置QGraphicsScene/View到特定的坐标系

    我想在a中绘制多边形QGraphicsScene但多边形具有纬度 经度位置 在等距柱状投影中 坐标来自 90 180 gt 180 90 我怎样才能设置QGraphicsScene QGraphicsView这样的预测 非常感谢 Carlo
  • 使用 Google App Engine Blobstore 下载的文件名

    我正在使用 Google App Engine Blobstore 来存储一系列文件类型 PDF XLS 等 并尝试找到一种机制 通过该机制可以使用上传文件的原始文件名 存储在 blob info 中 来命名下载的文件 即用户在保存对话框中