flask 使用send_file函数发送xlsx文件,前端报文件损坏错误
时间: 2024-04-17 08:25:06 浏览: 363
如果前端报告接收到的 XLSX 文件损坏,可能是由于在发送文件时未正确设置 MIME 类型。为了解决这个问题,你可以尝试在 `send_file` 函数中指定正确的 MIME 类型。以下是一个示例代码:
```python
from flask import Flask, send_file
import pandas as pd
app = Flask(__name__)
# 假设这是一个客户基本信息表的数据
customer_data = {
'name': ['John Doe', 'Jane Smith'],
'age': [30, 25],
'email': ['johndoe@example.com', 'janesmith@example.com'],
'phone': ['1234567890', '0987654321']
# 其他字段...
}
@app.route('/api/export', methods=['GET'])
def export_customer_data():
# 创建一个 DataFrame 对象
df = pd.DataFrame(customer_data)
# 将 DataFrame 导出为 XLSX 文件
filepath = 'customer_data.xlsx'
df.to_excel(filepath, index=False)
# 发送文件给前端
return send_file(filepath, as_attachment=True, mimetype='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
if __name__ == '__main__':
app.run()
```
在上面的代码中,我们在 `send_file` 函数中使用了 `mimetype='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'` 来指定正确的 MIME 类型。这告诉浏览器接收到的文件是一个有效的 XLSX 文件。
请确保在代码中指定正确的文件路径和文件名。另外,你可能需要安装 pandas 库,使用 `pip install pandas` 进行安装。
如果问题仍然存在,可能是由于其他原因导致的文件损坏。可以尝试打开生成的 XLSX 文件,确保它在本地可以正确打开。如果文件可以正常打开,但在前端下载时报错,可能需要检查前端代码是否正确处理下载的文件。
阅读全文