user3022875
user3022875

Reputation: 9018

Shiny downloadHandler not working

I have a Shiny downloadHandler

in server.R:

  output$DownloadButton <- downloadHandler(
    filename = function() {
      paste("test", Sys.Date(), ".csv",sep="")
    },
    content = function(con) {
      print("in download")

print(con) # this prints C:\\Users\\me\\Local\\Temp\\RtmpI1EjY7\\file668338e4c33
  Data<-ReactiveGetData()$Data #Here I get the data I want to download
  print(head(Data)) #This prints out the data with no errors
  write.csv(Data, con)
}
  )

here is ui.r:

  sidebarPanel(
    downloadButton("DownloadButton", label = "Download",class = NULL), ....

So far it printed the temp file:

C:\\Users\\me\\Local\\Temp\\RtmpI1EjY7\\file668338e4c33

BUT When I go to this path manually I get an error saying "File not found"

and then when I click on the download button I do not get an error and nothing happens.

Any idea why the temp file doesn't seem to be created?

Should the temp file end in csv?

HERE IS AN EVER SIMPLER EXAMPLE which you can run if you run the server.r and ui.r files belwo. I cannot download the file below:

The "file" object does not exist below any idea why?

ui.r

library(shiny)
shinyUI(fluidPage(
  sidebarPanel(
    downloadButton("Download", label = "Download",class = NULL)
  ),
  mainPanel(
    tabsetPanel(
      tabPanel("test",
               h3("test")
      )
    )
  )
))

server.r

library(rJava)
shinyServer(function(input, output, session) {


  output$Download <- downloadHandler(
    filename = function() {
      paste("test.csv",sep="")
    },
    content = function(file) {
      print("in download")
      print(file) #this file does not exist ???
      Data<- data.frame(name= c(1,2,3,4))
      print(head(Data))
      write.csv(Data, file)
    }
  )

})#end of server function

you can run this by:

library(rJava)
library(shiny)
runApp("C://Users//me//pathToShinyProjectFolder")

SOULTION: click "open in browser" in upper left and user CHROME OR FIREFOX as default browser.

Upvotes: 3

Views: 6701

Answers (1)

cdeterman
cdeterman

Reputation: 19970

Try opening the application in another browser. Not all browsers are created equally. This can be done by simply typing the following in another browser of your choosing.

localhost:5586

Note, that the port number may be different for you.

Upvotes: 5

Related Questions