0

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

4

1 回答 1

1

难道这里的问题实际上与HTTP有关?因为 response.download 会将您的文件名放在Content-Disposition中,尽管许多浏览器都接受它,但这里实际上只接受 ASCII。

如果这是问题,这里的解决方案是传递一个下载文件名,您可以在其中对中文字符进行百分比编码。因此,在您的下载功能中,您将执行以下操作:

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

我还没有实际测试过它,但它应该可以工作。

于 2017-03-02T13:34:40.777 回答