File Downloads — downloadHandler
R/shinywrappers.R
  Description
Allows content from the Shiny application to be made available to the user as
file downloads (for example, downloading the currently visible data as a CSV
file). Both filename and contents can be calculated dynamically at the time
the user initiates the download. Assign the return value to a slot on
output in your server function, and in the UI use
downloadButton() or downloadLink() to make the
download available.
Arguments
- filename
- A string of the filename, including extension, that the user's web browser should default to when downloading the file; or a function that returns such a string. (Reactive values and functions may be used from this function.) 
- content
- A function that takes a single argument - filethat is a file path (string) of a nonexistent temp file, and writes the content to that file path. (Reactive values and functions may be used from this function.)
- contentType
- A string of the download's content type, for example - "text/csv"or- "image/png". If- NULL, the content type will be guessed based on the filename extension, or- application/octet-streamif the extension is unknown.
- outputArgs
- A list of arguments to be passed through to the implicit call to - downloadButton()when- downloadHandleris used in an interactive R Markdown document.
See also
- The download handler, like other outputs, is suspended (disabled) by default for download buttons and links that are hidden. Use - outputOptions()to control this behavior, e.g. to set- suspendWhenHidden = FALSEif the download is initiated by programmatically clicking on the download button using JavaScript.
Examples
## Only run examples in interactive R sessions
if (interactive()) {
ui <- fluidPage(
  downloadButton("downloadData", "Download")
)
server <- function(input, output) {
  # Our dataset
  data <- mtcars
  output$downloadData <- downloadHandler(
    filename = function() {
      paste("data-", Sys.Date(), ".csv", sep="")
    },
    content = function(file) {
      write.csv(data, file)
    }
  )
}
shinyApp(ui, server)
}