web2py / pydal。当上传文件的原始文件名为中文字符时,下载上传文件错误

时间:2017-03-02 02:42:10

标签: web2py pydal

我正在使用web2py。我克隆了最新版本的pydal。我在表格中定义了一个“上传”字段。然后我上传一个文件名是中文字符的图像。到目前为止一切似乎都很好。但是,当我尝试使用下载功能访问上传的文件时,出现服务器错误。我找到了两种解决方案来避免这种错误。第一个解决方案是将fllename更改为英文字符,第二个解决方案是将pydal降级为嵌入web2py中的旧版本(2.14.6,于2016年5月10日发布)。所以我觉得在处理带有中文字符的文件名时最新的pydal出了问题。希望得到你的答案。谢谢。

1 个答案:

答案 0 :(得分:1)

这可能是因为这里的问题实际上与HTTP有关吗?因为response.download会将你的文件名放在Content-Disposition中,虽然很多浏览器都接受它,但这里只接受ASCII。

如果这是问题,这里的解决方案是传递download_filename,其中百分比编码中文字符。所以在你的下载功能中你会做这样的事情:

def download():
    import urllib
    return response.download(request, db, download_filename=urllib.quote(request.args(0))

我实际上没有对它进行测试,但它应该可以正常工作。