如何从部署在Google Cloud Platform的Flask网站下载Excel文件?
Flask Excel文件下载功能实现
1. 修改app.py添加下载路由
在你的app.py中添加以下代码,实现安全的Excel文件下载功能:
from flask import Flask, send_from_directory import os app = Flask(__name__) # 保留你原有的索引、检索路由代码 # 新增下载路由 @app.route('/download/<filename>') def download_file(filename): # 获取当前项目根目录,适配GCP部署环境 root_dir = os.path.dirname(os.path.abspath(__file__)) # 白名单限制可下载文件,防止非法访问 allowed_files = ['file1.xlsx', 'file2.xlsx'] if filename not in allowed_files: return "不允许下载该文件", 403 return send_from_directory(root_dir, filename, as_attachment=True) if __name__ == '__main__': app.run()
代码说明:
send_from_directory:Flask官方提供的安全文件传输函数,避免直接暴露文件路径as_attachment=True:强制浏览器触发下载动作,而非在线预览- 白名单机制:仅允许下载指定的Excel文件,降低安全风险
2. 在前端页面添加下载入口
修改templates/index.html,在合适位置添加下载按钮/链接:
<!-- 示例:在页面底部添加下载区域 --> <div class="download-area"> <h3>Excel文件下载</h3> <a href="/download/file1.xlsx" style="padding: 8px 16px; background: #007bff; color: white; text-decoration: none; border-radius: 4px;">下载file1.xlsx</a> <a href="/download/file2.xlsx" style="margin-left: 10px; padding: 8px 16px; background: #007bff; color: white; text-decoration: none; border-radius: 4px;">下载file2.xlsx</a> </div>
你可以根据现有页面的CSS样式调整按钮外观,确保风格统一。
3. 部署验证
将修改后的app.py和index.html重新部署到Google Cloud Platform,访问网站后点击下载按钮,即可获取对应Excel文件。
内容的提问来源于stack exchange,提问作者Omkar Kabde
相关产品推荐
相关产品推荐

