[我正在尝试建立一个网站,该页面上有一个页面可以下载一些资源,并且碰巧我的本地烧瓶版本可以完美地找到任何文件名(使用send_from_directory()
时),但是一旦部署在PythonAnywhere上,它就不会t适用于带有西班牙重音符号的文件名,例如á
。
我想它与unicode有关,但是我找不到如何解决它(pythonanywhere上的日志似乎没有显示任何内容,因为flask仅向用户提供了一个“未找到”页面)。
...而且我真的很想以人们下载的文件的名称来表示这些重音符号(它们是anki牌组,其中一些用于教育目的,在牌组中提供不良字法感觉很不对劲名称)。
我的代码如下:
@app.route('/anki/d/<file>')
def d_anki(file):
if file == "verbscat":
ankideck = "[Rusca] Temps Verbals Catalans.apkg"
elif file == "irregular":
ankideck = "[Rusca] Verbs Irregulars Anglès.apkg"
# ...
else:
return f"The file {file} wasn't found."
return send_from_directory("./static/anki/", ankideck, as_attachment=True, cache_timeout=0)
(然后我通过<a href="/anki/d/irregular" ...>
在按钮中链接到该URL)
attachment_filename="Whatever I want to call it"
中的参数上添加send_from_directory
为下载的文件选择一个不同的名称。因此,我想我们可以使用此替代方法(使原始文件具有简单的非重音名称,然后再添加适当的名称)。
if file == "irregular":
ankideck = "irregular.apkg"
name = "[Rusca] Verbs Irregulars Anglès.apkg"
# ...
return send_from_directory("./static/anki/", ankideck, as_attachment=True, attachment_filename=name cache_timeout=0)