python FileResponse下载中文文件名, 无法下载的问题

写python下载excel文档时,使用的python的 FileResponse,filename是中文时,正常使用英文发现没有问题,文件可以正常下载,但是使用中文名称命名文件时,无法生成文件后缀

response['Content-Disposition'] = 'attachment;filename=测试.xls'

修改代码如下,即可正常下载中文文件,

response['Content-Disposition'] = 'attachment;filename={}'.format(escape_uri_path('测试.xls'))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过使用 Selenium 和 Python 来获取下载文件名。首先,你需要设置浏览器的下载路径,确保文件下载时会保存到指定的位置。然后,你可以使用 Selenium 的相关方法来模拟点击下载按钮或链接。接下来,你可以使用 Python 的文件操作函数来获取最新下载文件名。 下面是一个示例代码: ```python from selenium import webdriver import os import time # 设置下载路径 download_path = "/path/to/download/folder" # 配置 Chrome 浏览器参数 chrome_options = webdriver.ChromeOptions() chrome_options.add_argument("--headless") # 无头模式,可选 chrome_options.add_argument("--disable-gpu") # 禁用 GPU 加速,可选 chrome_options.add_argument("--no-sandbox") # 解决 Linux 下运行问题,可选 chrome_options.add_argument("--disable-dev-shm-usage") # 解决 Linux 下运行问题,可选 chrome_options.add_argument("--disable-extensions") # 禁用扩展,可选 chrome_options.add_experimental_option("prefs", { "download.default_directory": download_path, "download.prompt_for_download": False, "download.directory_upgrade": True, "safebrowsing.enabled": True }) # 创建 Chrome 浏览器实例 driver = webdriver.Chrome(options=chrome_options) # 打开网页或执行其他操作 # 模拟点击下载按钮或链接 download_button = driver.find_element_by_id("download-button") download_button.click() # 等待一段时间,确保文件下载完成 time.sleep(5) # 获取最新下载文件名 list_of_files = os.listdir(download_path) latest_file = max(list_of_files, key=os.path.getctime) # 打印文件名 print("最新下载文件名:", latest_file) # 关闭浏览器 driver.quit() ``` 在上面的示例中,你需要将 `download_path` 替换为你想要保存下载文件的路径。然后,你可以根据实际情况修改代码中的网页操作和元素定位部分。最后,通过 `os.listdir()` 函数获取下载文件夹中的文件列表,并使用 `max()` 函数找到最新下载文件名。 请注意,该代码示例使用的是 Chrome 浏览器和 ChromeDriver。如果你使用的是其他浏览器,需要相应地更改代码。此外,确保已安装正确版本的浏览器驱动程序,并将驱动程序的路径添加到系统环境变量中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值