import flask from flask import send_file, make_response app = flask.Flask(__name__) @app.route('/pdf/<report_id>', methods=['GET']) def post(report_id): headers = ("Content-Disposition", f"inline;filename={report_id}.pdf")#文件预览 as_attachment = False # headers = (f"Content-Disposition", f"attachement;filename={report_id}.pdf")#文件下载 # as_attachment = True file_path ='D:\program c\pythonProject\pdf\result_tree{}.pdf'.format(str(report_id)) response = make_response(send_file(filename_or_fp=file_path, as_attachment=as_attachment)) response.headers[headers[0]] = headers[1] return response if __name__ == '__main__': app.run(port=1234)
时间: 2024-04-19 22:29:21 浏览: 56
这段代码使用了Flask框架创建了一个Web应用。它定义了一个路由`/pdf/<report_id>`,当收到GET请求时,会执行`post`函数。在函数内部,它设置了文件的Content-Disposition头部,以指定文件的展示方式(预览或下载)。然后,通过`send_file`函数发送文件给客户端。最后,将设置好的头部添加到响应的headers中,并返回响应。
该应用监听在本地的1234端口,当程序运行时,会启动该Web应用。
需要注意的是,代码中的文件路径`file_path`需要根据实际情况进行修改。
相关问题
from flask import Flask app=Flask(name) @app.route('/') def TX(): return 'hello' if name=='main': app.run() from flask import Flask
您好!感谢您提供的代码。
在您的代码中,有一些问题需要修正。首先,`Flask` 的构造函数需要传入一个字符串作为应用程序的名称,而不是一个变量。您可以将 `name` 替换为一个字符串,例如 `"__main__"`。
另外,`if name=='main'` 应该改为 `if __name__ == '__main__'`,以判断当前文件是否被直接运行。
修正后的代码如下所示:
```python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def TX():
return 'hello'
if __name__ == '__main__':
app.run()
```
如果您有任何其他问题,请随时提问!
flask send_from_directory与send_file在传递文件的区别
在 Flask 中,`send_from_directory` 和 `send_file` 都用于向客户端文件,但有一些区别。
send_from_directory` 函数用于从指定目录中发送文件。它提供了方便的方式来发送静态文件,如图像、CSS、JavaScript 等。以下是一个示例代码:
```python
from flask import Flask, send_from_directory
app = Flask(__name__)
@app.route('/images/<path:filename>')
def get_image(filename):
# 从指定目录中发送文件
return send_from_directory('static/images', filename)
if __name__ == '__main__':
app.run()
```
在上面的示例中,当请求 `/images/filename.jpg` 时,`get_image` 函数会从 `static/images` 目录中发送名为 `filename.jpg` 的文件。
`send_file` 函数用于发送任意类型的文件。它可以发送动态生成的文件(如通过 Pandas 导出的 XLSX 文件),或者从任意路径中发送文件。以下是一个示例代码:
```python
from flask import Flask, send_file
import pandas as pd
app = Flask(__name__)
@app.route('/api/export')
def export_data():
# 生成文件或从文件路径中获取文件
# ...
# 发送文件
return send_file('path/to/file.xlsx', as_attachment=True)
if __name__ == '__main__':
app.run()
```
在上面的示例中,当请求 `/api/export` 时,`export_data` 函数会发送名为 `file.xlsx` 的文件。
总结来说,`send_from_directory` 适用于发送静态文件,而 `send_file` 则适用于发送各种类型的文件,包括动态生成的文件。根据你的需求选择合适的函数。
阅读全文