要在API返回一个zip文件后设置标头,可以使用以下代码示例:
import flask
import io
import zipfile
app = flask.Flask(__name__)
@app.route('/download')
def download_zip():
# 创建一个内存缓冲区
buffer = io.BytesIO()
# 创建一个zip文件对象
with zipfile.ZipFile(buffer, 'w') as zip_file:
# 添加文件到zip文件中
zip_file.write('file1.txt')
zip_file.write('file2.txt')
# 将缓冲区的指针移动到开头
buffer.seek(0)
# 创建一个响应对象
response = flask.send_file(buffer, as_attachment=True, attachment_filename='files.zip')
# 设置标头
response.headers['Content-Type'] = 'application/zip'
response.headers['Content-Disposition'] = 'attachment; filename=files.zip'
return response
if __name__ == '__main__':
app.run()
在上面的示例中,我们首先创建一个内存缓冲区并使用zipfile.ZipFile
创建一个zip文件对象。然后,我们将文件添加到zip文件中。接下来,我们将缓冲区的指针移动到开头,并使用flask.send_file
创建一个响应对象,将缓冲区作为文件发送给客户端。最后,我们设置响应对象的标头,包括Content-Type和Content-Disposition,以指定文件类型和下载的文件名。
请注意,上述示例假设您已经将要添加到zip文件中的文件放在与脚本文件相同的目录中。您可以根据自己的需要修改文件的路径和名称。