Как загрузить PDF-файл из Dash

#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 папки.