博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python web将os.listdir()结果传入html导致中文连接丢失
阅读量:2489 次
发布时间:2019-05-11

本文共 970 字,大约阅读时间需要 3 分钟。

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

# 后端DNUP.py@bottle.route('/download/
')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
#前端页面

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

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

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

转载地址:http://bzorb.baihongyu.com/

你可能感兴趣的文章
git add . git add -u git add -A区别
查看>>
apache下虚拟域名配置
查看>>
session和cookie区别与联系
查看>>
PHP 实现笛卡尔积
查看>>
Laravel中的$loop
查看>>
CentOS7 重置root密码
查看>>
Centos安装Python3
查看>>
PHP批量插入
查看>>
laravel连接sql server 2008
查看>>
Laravel 操作redis的各种数据类型
查看>>
Laravel框架学习笔记之任务调度(定时任务)
查看>>
laravel 定时任务秒级执行
查看>>
浅析 Laravel 官方文档推荐的 Nginx 配置
查看>>
Swagger在Laravel项目中的使用
查看>>
Laravel 的生命周期
查看>>
CentOS Docker 安装
查看>>
Nginx
查看>>
Navicat远程连接云主机数据库
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Mysql出现Table 'performance_schema.session_status' doesn't exist
查看>>