Shiny for Python (dev version)
  • Express API
  • Core API
  • Testing API

On this page

  • ui.download_link
    • Parameters
    • Returns
    • Note
    • See Also
    • Examples
  • Report an issue

ui.download_link

ui.download_link(id, label, *, icon=None, width=None, **kwargs)

Create a download button.

Parameters

id : str

An id for the download.

label : TagChild

An input label.

icon : TagChild = None

An icon to display on the button.

width : Optional[str] = None

The width of the button.

**kwargs : TagAttrValue = {}

Additional attributes for the button.

Returns

: Tag

A UI element

Note

A download link is an output, not an input, so it can’t be updated with update_action_link. It is rendered in a disabled state and is enabled by Shiny once the server has supplied the download URL (this prevents the browser from downloading the app’s own HTML if the link is clicked before the session is ready). To only offer the download once some condition is met, render the link conditionally with ui. panel_conditional also works, but only for conditions that the browser can evaluate: its condition sees client-side input values, and some inputs (notably input_file) have no client-side value at all.

See Also

  • download_link
  • download_button

Examples

#| standalone: true
#| components: [editor, viewer]
#| layout: vertical
#| viewerHeight: 400

## file: app.py
import asyncio
import random
from datetime import date

from shiny import App, Inputs, Outputs, Session, render, ui

app_ui = ui.page_fluid(
    ui.download_link("downloadData", "Download"),
)


def server(input: Inputs, output: Outputs, session: Session):
    @render.download_link(
        filename=lambda: f"新型-{date.today().isoformat()}-{random.randint(100, 999)}.csv"
    )
    async def downloadData():
        await asyncio.sleep(0.25)
        yield "one,two,three\n"
        yield "新,1,2\n"
        yield "型,4,5\n"


app = App(app_ui, server)


## file: mtcars.csv
mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,carb
21,6,160,110,3.9,2.62,16.46,0,1,4,4
21,6,160,110,3.9,2.875,17.02,0,1,4,4
22.8,4,108,93,3.85,2.32,18.61,1,1,4,1
21.4,6,258,110,3.08,3.215,19.44,1,0,3,1
18.7,8,360,175,3.15,3.44,17.02,0,0,3,2
18.1,6,225,105,2.76,3.46,20.22,1,0,3,1
14.3,8,360,245,3.21,3.57,15.84,0,0,3,4
24.4,4,146.7,62,3.69,3.19,20,1,0,4,2
22.8,4,140.8,95,3.92,3.15,22.9,1,0,4,2
19.2,6,167.6,123,3.92,3.44,18.3,1,0,4,4
17.8,6,167.6,123,3.92,3.44,18.9,1,0,4,4
16.4,8,275.8,180,3.07,4.07,17.4,0,0,3,3
17.3,8,275.8,180,3.07,3.73,17.6,0,0,3,3
15.2,8,275.8,180,3.07,3.78,18,0,0,3,3
10.4,8,472,205,2.93,5.25,17.98,0,0,3,4
10.4,8,460,215,3,5.424,17.82,0,0,3,4
14.7,8,440,230,3.23,5.345,17.42,0,0,3,4
32.4,4,78.7,66,4.08,2.2,19.47,1,1,4,1
30.4,4,75.7,52,4.93,1.615,18.52,1,1,4,2
33.9,4,71.1,65,4.22,1.835,19.9,1,1,4,1
21.5,4,120.1,97,3.7,2.465,20.01,1,0,3,1
15.5,8,318,150,2.76,3.52,16.87,0,0,3,2
15.2,8,304,150,3.15,3.435,17.3,0,0,3,2
13.3,8,350,245,3.73,3.84,15.41,0,0,3,4
19.2,8,400,175,3.08,3.845,17.05,0,0,3,2
27.3,4,79,66,4.08,1.935,18.9,1,1,4,1
26,4,120.3,91,4.43,2.14,16.7,0,1,5,2
30.4,4,95.1,113,3.77,1.513,16.9,1,1,5,2
15.8,8,351,264,4.22,3.17,14.5,0,1,5,4
19.7,6,145,175,3.62,2.77,15.5,0,1,5,6
15,8,301,335,3.54,3.57,14.6,0,1,5,8
21.4,4,121,109,4.11,2.78,18.6,1,1,4,2

  • Report an issue