闪亮的下载处理程序不工作

Shiny downloadHandler not working

我有一个 Shiny downloadHandler

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)
}
  )

这里是ui.r:

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

到目前为止它打印了临时文件:

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

但是当我手动转到这条路径时,我收到一条错误消息 "File not found"

然后当我点击下载按钮时,我没有收到错误消息,也没有任何反应。

知道为什么似乎没有创建临时文件吗?

临时文件应该以 csv 结尾吗?

这里有一个更简单的例子,如果你 运行 server.r 和 ui.r 文件,你可以 运行。我无法下载以下文件:

下面不存在 "file" 对象,不知道为什么?

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

您可以通过以下方式运行:

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

解决方案:单击左上角的 "open in browser" 和用户 CHROME 或 FIREFOX 作为默认浏览器。

尝试在其他浏览器中打开该应用程序。并非所有浏览器都是平等创建的。这可以通过在您选择的另一个浏览器中简单地键入以下内容来完成。

localhost:5586

请注意,您的端口号可能有所不同。