闪亮:下载zip档案

m0n*_*awk 11 r 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)
    }
  )
})
Run Code Online (Sandbox Code Playgroud)

而且很简单ui.R:

shinyUI(fluidPage(
  titlePanel(""),
  sidebarLayout(
    sidebarPanel(
      downloadButton("downloadData", label = "Download")
    ),
    mainPanel(h6("Sample download", align = "center"))
  )
))
Run Code Online (Sandbox Code Playgroud)

我有很好的输出,除了错误:

> 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
Run Code Online (Sandbox Code Playgroud)

并且没有用于保存存档的保存对话框.但是在temp文件夹中显示了正确的存档.如何正确分享档案?

jdh*_*son 12

您正在使用<-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"))
    )
  ))
)
Run Code Online (Sandbox Code Playgroud)

  • 我注意到,如果我使用 Rstudio 浏览器,则 zip 下载对我不起作用。所以你可能想在外部浏览器中尝试一下以确保。 (2认同)
  • 该程序导致我无法下载我的浏览器底部出现一个下载失败框,并显示 messafe“失败 - 没有文件”。知道有什么问题吗? (2认同)