Skip to content

Instantly share code, notes, and snippets.

@wch
Created March 18, 2014 21:49
Show Gist options
  • Save wch/9630481 to your computer and use it in GitHub Desktop.
Save wch/9630481 to your computer and use it in GitHub Desktop.
File download example for R Shiny

To create file download button, there should be a downloadButton on the client side, and a corresponding downloadHandler on the server side.

Title: Download File
Author: RStudio, Inc.
AuthorUrl: http://www.rstudio.com/
License: MIT
DisplayMode: Showcase
Tags: file-download
Type: Shiny
shinyServer(function(input, output) {
datasetInput <- reactive({
# Fetch the appropriate data object, depending on the value
# of input$dataset.
switch(input$dataset,
"Rock" = rock,
"Pressure" = pressure,
"Cars" = cars)
})
output$table <- renderTable({
datasetInput()
})
# downloadHandler() takes two arguments, both functions.
# The content function is passed a filename as an argument, and
# it should write out data to that filename.
output$downloadData <- downloadHandler(
# This function returns a string which tells the client
# browser what name to use when saving the file.
filename = function() {
paste(input$dataset, input$filetype, sep = ".")
},
# This function should write data to a file given to it by
# the argument 'file'.
content = function(file) {
sep <- switch(input$filetype, "csv" = ",", "tsv" = "\t")
# Write to a file specified by the 'file' argument
write.table(datasetInput(), file, sep = sep,
row.names = FALSE)
}
)
})
shinyUI(fluidPage(
titlePanel('File download'),
sidebarLayout(
sidebarPanel(
selectInput("dataset", "Choose a dataset:",
choices = c("Rock", "Pressure", "Cars")),
radioButtons("filetype", "File type:",
choices = c("csv", "tsv")),
downloadButton('downloadData', 'Download')
),
mainPanel(
tableOutput('table')
)
)
))
@trg1984
Copy link

trg1984 commented Mar 7, 2017

@VHAnalytos you can zip the files and send the zip to the user as a response, see the accepted response in http://stackoverflow.com/questions/26881368/shiny-download-zip-archive for an example (list file paths in fs variable).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment