r - Shiny :下载 zip 存档

标签 r shiny

我做不出 Shiny 的 downloadHandler输出 zip 文件:

# server.R
library(shiny)

shinyServer(function(input, output) {  
  output$downloadData <- downloadHandler(
    filename <- function() {
      paste("output", "zip", sep=".")
    },

    content <- function(fname) {
      fs <- c()
      tmpdir <- tempdir()
      setwd(tempdir())
      for (i in c(1,2,3,4,5)) {
        path <- paste0("sample_", i, ".csv")
        fs <- c(fs, path)
        write(i*2, path)
      }
      zip(zipfile=fname, files=fs)
    }
  )
})

和简单的 ui.R :
shinyUI(fluidPage(
  titlePanel(""),
  sidebarLayout(
    sidebarPanel(
      downloadButton("downloadData", label = "Download")
    ),
    mainPanel(h6("Sample download", align = "center"))
  )
))

我有很好的输出,除了错误:
> shiny::runApp('C:/Users/user/AppData/Local/Temp/test')

Listening on http://127.0.0.1:7280
  adding: sample_1.csv (stored 0%)
  adding: sample_2.csv (stored 0%)
  adding: sample_3.csv (stored 0%)
  adding: sample_4.csv (stored 0%)
  adding: sample_5.csv (stored 0%)
Error opening file: 2
Error reading: 6

并且没有保存对话框来保存存档。但是在temp文件夹中显示了正确的存档。如何正确共享存档?

最佳答案

您正在使用 <-在 downloadHandler 函数内部,应该使用 = .您也可能需要定义 contentType :

library(shiny)

runApp(
  list(server = function(input, output) {  
    output$downloadData <- downloadHandler(
      filename = function() {
        paste("output", "zip", sep=".")
      },
      content = function(fname) {
        fs <- c()
        tmpdir <- tempdir()
        setwd(tempdir())
        for (i in c(1,2,3,4,5)) {
          path <- paste0("sample_", i, ".csv")
          fs <- c(fs, path)
          write(i*2, path)
        }
        zip(zipfile=fname, files=fs)
      },
      contentType = "application/zip"
    )
  }
  , ui = fluidPage(
    titlePanel(""),
    sidebarLayout(
      sidebarPanel(
        downloadButton("downloadData", label = "Download")
      ),
      mainPanel(h6("Sample download", align = "center"))
    )
  ))
)

关于r - Shiny :下载 zip 存档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26881368/

相关文章:

r - 在 R DataFrame 中设置

r - file.choose in r 打开对话框为pop behind 不pop up

r - 为 R Shiny 中的每个向下钻取级别图选择 R Highcharter 颜色

r - 在下一个 mutate_at 中选择由 mutate_at 创建的正确列

r - 轴上显示字符串的R图

css - 我如何找到我 Shiny 的应用程序的现有 css?

css - 在 shinydashboard::box 标题中设置 shinyWidget::dropdownButton 样式

r - 根据输入 Shiny 的 iframe

r - 根据投票百分比同时移动所有几何条

r - 计算R中一个数据集中的行与另一个数据集中的所有行之间的差异