【问题标题】:"Download" button opens a new app window without downloading - Shiny“下载”按钮打开一个新的应用程序窗口而不下载 - Shiny
【发布时间】:2016-12-29 06:15:21
【问题描述】:

我的“下载”按钮无法按预期工作。每次我点击它都会打开一个新的应用程序窗口。我想知道为什么它会以这种方式运行?

server.R中的下载功能:

output$down_load <- downloadHandler(
    # specify the file name
    filename = function() {
          paste('cls_result_export', Sys.Data(),'.csv', sep='')
        },
    # Write the plot back
    content = function(file){
          write.csv(cls_output()$raw_data, file)
        }
)

ui.R中的下载功能:

downloadButton(outputId = "down_load", label = "Download the CLS Raw Data")

【问题讨论】:

  • @user5249203 嗯,即使我改用“cls_result_export.csv”,它仍然会打开新窗口。 ;( 另外,cls_output() 是一个响应式对象,它返回多个对象。使用“cls_output()$raw_data”从“cls_output()”获取“raw_data”对象应该是可以的。
  • 那么您的期望是什么?我认为该窗口应该打开,以便用户有机会重命名它。尽管它在浏览器和 R-Studio 查看器中的行为似乎有所不同,但它并没有为我在 Chrome 浏览器中打开一个窗口。如果你不想要一个窗口,你可以使用一个操作按钮来保存它。
  • @MikeWise 感谢您使用“操作按钮”的建议!我会试一试。我当前的“下载”按钮只是为同一应用程序的新会话打开一个新窗口,并且在此过程中没有执行下载。我不介意它是否只是打开一个新窗口进行下载.. :(跨度>
  • Chrome 和 RStuio 查看器中的不同行为让我认为该功能有缺陷且指定不明确(因为文档没有透露它实际上应该做什么)。
  • @MikeWise 是的,我明白了。知道了。就我而言,由于我必须使用反应对象的结果,因此我将只使用带有 write.csv() 的操作按钮。感谢您的帮助!:)

标签: r shiny shinydashboard


【解决方案1】:

尝试使用连接到observe 子句的actionButton,如下所示:

library(shiny)

ui <- fluidPage(  actionButton("dodo", "Download" ) )

   server <-  function(input, output)
   {
     observe({

       if (input$dodo>0){
          fname <- paste0('cls_result_export', Sys.Date(),'.csv')
          write.csv(mtcars,fname)
       }
     })
}
shinyApp(ui = ui, server = server)

【讨论】:

    【解决方案2】:

    尝试解决此问题的另一种可能方法是将此行包含在您的 server.R 脚本中:

    outputOptions(output, 'down_load', suspendWhenHidden=FALSE)

    【讨论】:

    • 刚刚看到更新。感谢您提供替代解决方案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 2021-06-22
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    相关资源
    最近更新 更多