The logo for Shiny for Python Shiny for Python
  • Get Started
  • Concepts
  • Components
    • Components
    • Layouts
    • Templates
  • Gallery
  • Playground
  • Reference
    • Shiny Express
    • Shiny Core
    • Testing
  1. Uploads & downloads
  2. ui.download_link
  • Shiny Core API
  • Page containers
    • ui.page_sidebar
    • ui.page_navbar
    • ui.page_sidebar
    • ui.page_fillable
    • ui.page_fluid
    • ui.page_fixed
    • ui.page_bootstrap
    • ui.page_auto
    • ui.page_output
  • UI Layouts
    • ui.sidebar
    • ui.layout_sidebar
    • ui.layout_columns
    • ui.layout_column_wrap
    • ui.card
    • ui.card_header
    • ui.card_footer
    • ui.popover
    • ui.tooltip
    • ui.accordion
    • ui.accordion_panel
    • ui.column
    • ui.row
  • UI Inputs
    • ui.input_select
    • ui.input_selectize
    • ui.input_slider
    • ui.input_dark_mode
    • ui.input_date
    • ui.input_date_range
    • ui.input_checkbox
    • ui.input_checkbox_group
    • ui.input_switch
    • ui.input_radio_buttons
    • ui.input_numeric
    • ui.input_text
    • ui.input_text_area
    • ui.input_password
    • ui.input_action_button
    • ui.input_action_link
    • ui.input_task_button
  • Value boxes
    • ui.value_box
    • ui.value_box_theme
    • ui.showcase_bottom
    • ui.showcase_left_center
    • ui.showcase_top_right
  • Navigation (tab) panels
    • ui.nav_panel
    • ui.nav_spacer
    • ui.nav_menu
    • ui.nav_control
    • ui.navset_bar
    • ui.navset_tab
    • ui.navset_pill
    • ui.navset_underline
    • ui.navset_card_tab
    • ui.navset_card_pill
    • ui.navset_card_underline
    • ui.navset_pill_list
    • ui.navset_hidden
    • ui.navbar_options
  • UI panels
    • ui.panel_absolute
    • ui.panel_fixed
    • ui.panel_conditional
    • ui.panel_title
    • ui.panel_well
  • Uploads & downloads
    • ui.input_file
    • ui.download_button
    • ui.download_link
  • Chat interface
    • ui.Chat
    • ui.chat_ui
  • Streaming markdown
    • ui.MarkdownStream
    • ui.output_markdown_stream
  • Custom UI
    • ui.Theme
    • ui.HTML
    • ui.TagList
    • ui.tags
    • ui.markdown
    • ui.include_css
    • ui.include_js
    • ui.insert_ui
    • ui.remove_ui
    • ui.busy_indicators.use
    • ui.busy_indicators.options
    • ui.fill.as_fillable_container
    • ui.fill.as_fill_item
    • ui.fill.remove_all_fill
    • ui.css.as_css_unit
    • ui.css.as_css_padding
  • Update inputs
    • ui.update_select
    • ui.update_selectize
    • ui.update_slider
    • ui.update_dark_mode
    • ui.update_date
    • ui.update_date_range
    • ui.update_checkbox
    • ui.update_checkbox_group
    • ui.update_switch
    • ui.update_radio_buttons
    • ui.update_numeric
    • ui.update_text
    • ui.update_text_area
    • ui.update_navs
    • ui.update_action_button
    • ui.update_action_link
    • ui.update_task_button
  • Update UI Layouts
    • ui.update_sidebar
    • ui.update_tooltip
    • ui.update_popover
    • ui.update_accordion
    • ui.update_accordion_panel
    • ui.insert_accordion_panel
    • ui.remove_accordion_panel
  • Rendering outputs
    • ui.output_plot
    • ui.output_image
    • ui.output_table
    • ui.output_data_frame
    • ui.output_text
    • ui.output_code
    • ui.output_text_verbatim
    • ui.output_ui
    • render.plot
    • render.image
    • render.table
    • render.text
    • render.code
    • render.ui
    • render.express
    • render.download
    • render.data_frame
    • render.DataGrid
    • render.DataTable
  • Reactive programming
    • reactive.calc
    • reactive.effect
    • reactive.value
    • reactive.Calc
    • reactive.Effect
    • reactive.Value
    • reactive.event
    • reactive.isolate
    • reactive.invalidate_later
    • reactive.extended_task
    • reactive.flush
    • reactive.poll
    • reactive.file_reader
    • reactive.lock
    • req
  • Create and run applications
    • run_app
    • App
    • Inputs
    • Outputs
    • Session
  • Display messages
    • ui.help_text
    • ui.notification_show
    • ui.notification_remove
    • ui.modal
    • ui.modal_show
    • ui.modal_remove
    • ui.modal_button
    • ui.Progress
  • Modules
    • module.ui
    • module.server
  • Developer facing tools
    • Session
    • Create output renderers
    • htmltools methods
    • ExtendedTask
  • Types
    • Miscellaneous types
    • Tag types
    • Exception types
  • Deprecated
    • render.transformer.output_transformer
    • render.transformer.resolve_value_fn
  • Experimental
    • Card

On this page

  • ui.download_link
    • Parameters
    • Returns
    • See Also
    • Examples
  • Report an issue
  • Edit this page
  1. Uploads & downloads
  2. ui.download_link

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

See Also

  • download
  • download_button

Examples

#| '!! shinylive warning !!': |
#|   shinylive does not work in self-contained HTML documents.
#|   Please set `embed-resources: false` in your metadata.
#| 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(
        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

ui.download_button
ui.Chat

Proudly supported by Posit

 
  • Report an issue
  • Edit this page