python web将os.listdir()结果传入html导致中文连接丢失

使用python-bottle框架进行web开发,目前开发了一个在局域网内方便下载和上传文件的服务器DNUP。在下载时,就特定的文件夹刷新下载链接。此时,需要在后端python文件中使用os.listdir()遍历文件夹下的文件,然后将结果传递给前端html文件,并循环生成下载连接。

# 后端DNUP.py
@bottle.route('/download/<filename:path>')
def download(filename):
    return bottle.static_file(filename, root='F:\\', download=filename)

@bottle.post('/filelist')
@bottle.view('filelist')
def get_download_info():
    rev = bottle.request.forms.get('opts')
     ...判断语句...
    pwd = u'F:\\file'
    list = os.listdir(pwd)
    info = {'tplrev':rev, 'tpllist':list}
    return info
#前端页面
<div class="rht">
    <ul>
        %for name in tpllist:
        <ol><a href="/download/{{tplrev}}/{{name}}">{{name}}</a></ol>
        %end
    </ul>
</div>

如果执行python DNUP.py然后再/download/filename下下载文件会发现,页面上中文文件显示正常,但是点击文件进行下载时发现页面404,无法查找到下载文件,并且显示的文件连接为unicode编码。而win下是ascii编码,导致使用unicode编码无法查找到需要下载的文件,解决方法是将生成的/download/连接进行解码:

@bottle.route('/download/<filename:path>')
def download(filename):
    return bottle.static_file(filename.decode('utf-8'), root='F:\\', download=filename)

此时就可以进行正常下载了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值