【发布时间】:2018-09-30 10:12:47
【问题描述】:
我如何确保以下 html url 链接会以utf-8 编码返回自身?
<meta http-equiv="REFRESH" content="5; URL=http://superhost.gr/files/download?filename={{ filename }}">
就像现在一样,虽然文件名的值是从 Flask 中以utf-8 检索的,但它并没有形成 URL 链接也为utf-8。
这是我获取此值并尝试使用它来下载文件的方式。
# Prepare selected file for download...
if request.args:
filename = request.args.get('filename') # value comes from template url link
filepath = '/static/files/'
return send_from_directory( filepath, filename, as_attachment=True )
我正在尝试在 Apache/WSGI mod 下生成与 Jinja2 / Flask 的链接。
也许是 mod_wsgi 下的 Apache 导致了这个问题?!
我在浏览器中看到的错误是:
Bad Request
The browser (or proxy) sent a request that this server could not understand.
根据 Chrome 的开发者工具/网络选项卡为具有混合文件名(希腊语 + 英语)的测试文件生成的链接是:
【问题讨论】:
-
我看不懂,你想得到
{{ filename }}的值吗? -
我想将该值传递给使用 unicode 编码的链接,因为它包含希腊字母。
-
我写了代码,但我不知道为什么不起作用。检查jsfiddle.net/skv89cnz也许对你有帮助
-
我在这里看到你传递了这个值
Νικόλαοςτο 参数。在我的情况下,该值是从具有正确编码的 Bottle 框架中检索的,但不幸的是,当<meta http-equiv="REFRESH" content="5; URL=http://superhost.gr/files/download?file={{ filename }}">形成时,它不会重定向到使用 utf-8 编码的 url。我能保证吗? -
您可以使用框架中的代码并更改其中的
filename或在{{ filename }}中设置值然后运行代码
标签: python-3.x flask wsgi