Downloader
类源码
downloader = Downloader(
id: str
to_addr: Callable[[str], str] | None
)
纯 Python-Dash 实现的下载组件。
该组件纯粹由 Python 代码实现。
别名
该类可以通过以下方法取得。
import dash_file_cache as dfc
dfc.Downloader
dfc.components.Downloader
dfc.components.downloader.Downloader
参数
参数 | 类型 | 必选 | |
---|---|---|---|
id | str | 该组件的基本 ID。 | |
to_addr | Callable[[str], str] | None | 可选预处理函数。用来将 callback 触发的输入值转换成可以用来下载的地址。 若该值留空,则会直接使用触发输入值(等价于使用 若返回空字符串,下载事件则不会触发。 |
方法
layout
layout: html.Div = downloader.layout()
获取该组件的布局。
输出
参数 | 类型 | |
---|---|---|
layout | html.Div | 该下载器的布局。 |
use_callbacks
downloader.use_callbacks(app: dash.Dash)
使用callback。
将本组件自动生成的callback绑定到指定的app
上。
输入
参数 | 类型 | 必选 | |
---|---|---|---|
app | Dash | Dash应用。 |
属性
as_input
cbk_input: dash.Input = downloader.as_input
将“本组件被触发”提供为callback的输入。该输入会在可下载文件的地址就绪时被触发。
as_output
cbk_output: dash.Output = downloader.as_output
将“触发本组件”提供为callback的输出。
as_state
cbk_state: dash.State = downloader.as_state
将“本组件被触发”提供为callback的状态量。该状态量对应的输入会在可下载文件的地址就绪时被触发。
范例
最小范例
- 代码
- 结果
minimal_example_downloader.py
from typing import Optional
import dash
import flask
from dash import html, Input
from dash_file_cache.services.utilities import get_server
from dash_file_cache.components.downloader import Downloader
app = dash.Dash("demo")
server = get_server(app)
downloader = Downloader(id="downloader", to_addr=None)
app.layout = html.Div((html.Button(id="btn", children="Download"), downloader.layout()))
downloader.use_callbacks(app)
@server.route("/file")
def file():
resp = flask.Response("test file content", status=200, mimetype="text/plain")
resp.headers["Content-Disposition"] = "attachment; filename=test.txt"
return resp
@app.callback(downloader.as_output, Input("btn", "n_clicks"))
def trigger_get_file(n_clicks: Optional[int]):
if not n_clicks:
return dash.no_update
return "/file"
if __name__ == "__main__":
app.run()
渲染包含一个下载按钮的应用。
按下按钮时,会下载名为text.txt
的文件。文件内容为
test file content
使用背景callback下载文件
参见