如何在 python Bottle 中提供带有希伯来语名称的静态文件?

2024-03-18

我收到客户端的请求,要求从服务器下载一些文件。 文件名是希伯来语。

@bottle.get("/download/<folder_name>/<file_name>")
def download(folder_name, file_name):

    file_name =  file_name.decode('utf-8')
    folder_name =  folder_name.decode('utf-8')

    if os.path.exists(os.path.join(folder_name, file_name)):
        return bottle.static_file(file_name, root=folder_name, download=True)

最后一行失败:

return bottle.static_file(file_name, root=folder_name, download=True)

我得到一个例外:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 22-25: ordinal not in range(128)

我不知道我在这里做错了什么。

Callstack 显示了源自 python Bottle 代码的异常:

File "C:\Python27\Lib\site-packages\bottle-0.10.9-py2.7.egg\bottle.py", line 1669, in __setitem__
  def __setitem__(self, key, value): self.dict[_hkey(key)] = [str(value)]

请帮忙。

看待, 奥马尔.


Bottle 正在尝试设置Content-DispositionHTTP 响应的标头attachment; filename=...。这不适用于非 ASCII 字符,因为 Bottle 处理 HTTP 标头时使用str内部...但即使没有,也没有跨浏览器兼容的方法来设置Content-Disposition与非 ASCIIfilename. (背景 https://stackoverflow.com/questions/695356/downloading-file-with-or-in-file-name-ruins-filename/695719#695719.)

你可以设置download='...'一个安全的纯 ASCII 字符串来覆盖 Bottle 的默认猜测(使用本地文件名,包含 Unicode)。

或者,省略download参数并依赖浏览器从 URL 末尾猜测文件名。 (这是获取 Unicode 下载文件名的唯一广泛兼容的方法。)不幸的是,Bottle 将忽略Content-Disposition完全,因此请考虑更改返回响应的标头以包含纯文本Content-Disposition: attachment没有文件名。或者也许你不在乎,如果Content-Type无论如何都会被下载。

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

如何在 python Bottle 中提供带有希伯来语名称的静态文件? 的相关文章

随机推荐

  • HikariCP:为 Oracle 11g 设置 maxLifetime 时应考虑哪些数据库级别超时

    在 HikariCP 的文档中提到 我们强烈建议设置此值 并且它应该比任何数据库级连接超时至少少 30 秒 Oracle 11g 2 数据库应考虑哪些数据库级连接超时 我怎样才能找到这些超时 要执行的查询 简短回答 无 默认情况下 作为记录
  • 如何在 C++ 中从指向向量的指针访问向量的内容?

    我有一个指向向量的指针 现在 如何通过指针读取向量的内容 解决方案有很多 我总结了一些 int main int nArgs char vArgs vector
  • Chrome 扩展 API webRequest 不能很好地响应

    所以我正在尝试 Chrome API webRequest 根据要求 一切正常 但在响应时 我遇到了问题 我的测试非常简单 function func obj var resHeaders obj responseHeaders for v
  • 如何删除 MongoDB 中的此弃用警告以及为什么会发生这种情况?

    我只是想创建一个 API 并在 app js 文件中连接到它 但每次运行 app js 时都会收到此弃用警告 我已经检查了 mongoose 和 MongoDB 中的所有弃用警告 但我找不到任何与我的相匹配的警告 我收到的警告是 node
  • 将对象列表中的对象项替换为另一个项

    我的变量中有一个项目对象this rows 有一个来自服务器的实时项目与里面的项目相同this rows对象集合 如何用新值替换项目 这是一个例子 let rows id 11 active no id 22 active yes id 3
  • FirebaseCrashlytics:设置请求失败

    我几乎完成了 Android 应用程序的构建 但我想添加 Firebase Crashlytics 我总是添加这个并且安装它从来没有遇到过问题 但现在不同了 我收到以下错误 2021 05 24 20 41 42 807 11296 113
  • Ubuntu 16.10 x64 上的 Laravel 5.3 的 Cron 作业

    我正在运行 Digital Ocean 的 Ubuntu 16 10 x64 并在服务器上部署了 php Framework Laravel 5 3 28 在大多数情况下 一切都正常工作 但是我试图让 crontab 调用 artisan
  • Hudson 经验 - 构建矩阵项目

    有人尝试过该功能并有一些反馈吗 或者有人知道一些有用的示例来查找吗 几个月前我尝试过这个功能 但我不再使用它 只是因为我不需要它 而不是因为它不是一个好功能 基本上 您定义 n 个轴 每个轴都是一个具有多个值的属性 让我们举个例子 您定义了
  • 是否可以使用 AJAX 将图像文件上传到 Domino 服务器?

    是否可以使用 AJAX 将图像文件上传到 Domino 服务器 我正在尝试从 Android 手机上传照片 我可以将图像数据发送回 Domino 中的富文本字段 但我不知道如何将其渲染为多米诺表单上的图像 理想情况下 我想通过 ajax 发
  • 公共记录类型的构造函数?

    假设我想要一个记录类型 例如 type CounterValues Values int list IsCorrupt bool 问题是 我想创建一个构造函数 将传递的整数列表转换为一个没有负值的新列表 它们将被 0 替换 并且仅当在构造时
  • 无法将 NULL 值插入 AspNetUsers 表“Discriminator”列

    代码首次迁移后 使用寄存器添加用户失败 并显示 无法将 NULL 值插入表 aspnet BSF2013 20130918101120 dbo AspNetUsers 列 Discriminator 列不允许为空 创建用户代码是项目模板生成
  • 如何在计时器到期时关闭 InfoBox.Popup?

    我在 Outlook 2013 中从其他帖子中拼凑出了这个测试过程 它应该显示一个弹出框 然后在 3 秒后关闭 它永远不会关闭 Sub MessageBoxTimer Dim AckTime As Integer InfoBox As Ob
  • JLabel 超链接可在正确的 URL 处打开浏览器

    我需要使用 Java Swing 创建一个可单击的标签 并且能够打开桌面上的默认浏览器并将其重定向到特定的 url 我的代码能够打开浏览器 但无法将其重定向到正确的网址 加载默认主页 我的测试代码 import java awt impor
  • Node.js 用户名和密码认证

    我目前正在使用构建一个网络应用程序Node js and Express js 我正在寻找一种方法 在我的主目录中使用用户名和密码进行简单的服务器端身份验证app js正在监听的文件post请求于http www domain com lo
  • 如何在 Android 选择器中定义粗体?

    在我的 Android 应用程序中 我有几个单选按钮 它们应该具有不同的颜色并在选择时变为粗体 我设法通过定义来获得不同的颜色radio pick color xml可绘制文件
  • iOS 强密码自动填充未显示在确认密码上

    iOS 会自动填充第一个密码字段 但不会填充第二个密码字段 如何像应用程序中那样自动填充密码和确认密码字段 更新 系统似乎将注册表单视为登录表单 因此它会自动填充第一个密码字段 另外 当我导航回登录屏幕时 系统提示我是否要将密码保存在钥匙串
  • 如何在IDEA中打开项目时停止自动刷新SBT模块?

    我们有多个 Play 2 应用程序和模块 但我在将 IntelliJ IDEA 13 集成到我的开发流程中时遇到了问题 我有一个基于应用程序的公共父级的空项目 并且我已使用导入现有 SBT 项目选项将每个应用程序作为模块导入 我的问题是 每
  • Plotly for R:当数据集包含大于 1000 的数字时,删除 y 轴上出现的 k

    您好 关于plotly的一个 简单 问题 我想删除当数据集包含大于10000的数字时似乎自动出现在y轴上的k 我尝试将数据上传到plotly在线并将 k 放入以及 例如使用数据的子集 date lt c 1 07 1987 2 07 198
  • 应用程序部署到网络驱动器

    我有一个 NET 4 WPF需要在公司网络内运行的应用程序 该应用程序不使用本地文件 它确实有一个app config文件 但它只包含一些connection strings 用于数据存储 但中央SQL server数据库 将应用程序文件放
  • 如何在 python Bottle 中提供带有希伯来语名称的静态文件?

    我收到客户端的请求 要求从服务器下载一些文件 文件名是希伯来语 bottle get download