Flask调用指定URL下载Excel并保存至项目downloads文件夹求助
解决Flask中下载Excel文件到指定文件夹的问题
嘿,我来帮你搞定这个文件保存的问题!你已经用requests.get拿到了文件的请求响应,接下来只需要把响应的二进制内容写入到downloads文件夹里就行,而且最好先确保这个文件夹存在,避免报错。
下面是完整的代码示例,你可以直接放到main.py里:
import requests import os from flask import Flask app = Flask(__name__) @app.route('/download-excel') def download_excel(): # 目标Excel文件的URL excel_url = 'http://www.bocsar.nsw.gov.au/Documents/RCS-Annual/bluemountainslga.xlsx' # 构建保存路径:基于Flask项目根目录的downloads文件夹 save_directory = os.path.join(app.root_path, 'downloads') # 确保downloads文件夹存在,不存在则自动创建 os.makedirs(save_directory, exist_ok=True) # 拼接完整的文件保存路径,保留原文件名 file_path = os.path.join(save_directory, 'bluemountainslga.xlsx') # 发送请求获取文件 response = requests.get(excel_url) # 检查请求是否成功 if response.status_code == 200: # 以二进制写入模式保存文件 with open(file_path, 'wb') as file: file.write(response.content) return "Excel文件已成功保存到项目的downloads文件夹中!" else: return f"下载失败,HTTP状态码:{response.status_code}" if __name__ == '__main__': app.run(debug=True)
关键细节说明:
- 使用
app.root_path来获取Flask项目的根目录,这样不管你的项目部署在什么位置,路径都是正确的,不用硬写绝对路径 os.makedirs(save_directory, exist_ok=True)会自动创建downloads文件夹,如果文件夹已经存在也不会报错- 用
wb(二进制写入)模式打开文件,因为Excel是二进制格式的文件,必须用这种模式才能正确保存 - 先检查响应的状态码是否为200,确保请求成功后再写入文件,避免保存无效的内容
运行这个Flask应用后,访问http://localhost:5000/download-excel就能触发下载并保存文件到指定的downloads文件夹啦!
内容的提问来源于stack exchange,提问作者Tim B
相关产品推荐
相关产品推荐

