#python #download #plotly-dash #downloadfile
#python #Скачать #plotly-dash
Вопрос:
Я хочу, чтобы пользователь мог загружать PDF-файл. Но когда я нажимаю на ссылку, он загружает пустой файл, а при открытии файла отображается сообщение об ошибке (не удалось загрузить документ).
Файл уже сохранен в папке assets.
Это та часть кода, которую я использую:
html.Div(html.A('Download file', download='metodologia.pdf', href='./assets/metodologia.pdf')
Комментарии:
1. Вы пробовали
href=app.get_asset_url('metodologia.pdf')
вместоhref='./assets/metodologia.pdf'
?2. Большое спасибо. Это сработало так.
Ответ №1:
Я бы рекомендовал использовать Download
компонент из dash-extensions==0.0.41
. Вот небольшой пример из документации,
import dash
import dash_html_components as html
from dash.dependencies import Output, Input
from dash_extensions import Download
from dash_extensions.snippets import send_file
app = dash.Dash(prevent_initial_callbacks=True)
app.layout = html.Div([html.Button("Download", id="btn"), Download(id="download")])
@app.callback(Output("download", "data"), [Input("btn", "n_clicks")])
def func(n_clicks):
return send_file("/home/emher/Documents/Untitled.png")
if __name__ == '__main__':
app.run_server()
По сравнению с вашим текущим решением этот подход имеет несколько преимуществ. Поскольку под капотом используется большой двоичный объект, поддерживаются файлы большего размера. Кроме того, вы не ограничены загрузкой файлов из assets
папки.