【发布时间】:2016-12-09 11:01:07
【问题描述】:
非常感谢您的阅读:
我正在开发一个小应用程序(爱好)来自动上传文件并使用本地机器中的 python 和 WEB 中的 web2py
上传的文件名有希腊 utf8 编码字符,即
New_Υπολογιστικό_φύλλο_OpenDocument.ods
在默认的 web2py 控制器中,我使用以下内容:
1:抓住查看链接中点击的文件名
2:将文件名发送到浏览器:
def myaction():
import os
import urllib
path =request.folder + 'files_to_transfer'
###### my folder where files are uploated######
#change cwd to path
cwd = os.chdir(path)
filename = urllib.quote_plus(request.vars['z'])
return response.stream(filename)
在默认控制器中,我也使用以下代码来准备视图使用的文件名列表:
def index():
import os
import json
path =request.folder + 'files_to_transfer'
#change cwd to path
cwd = os.chdir(path)
filenames = []
filenames_excluded = ['httpserver.log', 'server_files.json' ]
for file in os.listdir(u'.'):
if file not in filenames_excluded:
filenames.append ((file).encode('utf-8'))
return dict(message=filenames)
在我使用的视图中:
<html>
<head><meta charset="utf-8" /></head>
<body>
<h2>
{{for x in range(len(message)):}}
{{=A('click me', callback=URL('myaction', args=['x', 'y'], vars=dict(z=message[x])))}}
{{=message[x]}}<br />{{pass}}
</h2>
</body>
</html>
链接格式如下:
点我新建WinRAR压缩包.rar
点击我 新建 Υπολογιστικό φύλλο OpenDocument.ods
点我New_WinRAR_archive.rar等...
问题:只下载包含英文字符的文件名。 urllib.quote_plus 的使用完成了它的工作并产生和链接如下:
但 response.stream 返回 404 NOT FOUND 错误。 我尝试了 urlencode 的变体,但无济于事。 非常感谢任何想法或cmet。
编辑:我尝试过使用:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
但没有运气。
【问题讨论】:
标签: python utf-8 urllib web2py