2015-10-29 88 views
10

比方说,我有一个现有的zip文件(out.zip)在我闪亮的应用程序(即位于服务器上)。我希望让用户能够下载此文件。这个问题与this one非常相似。然而,这个问题在downloadHandler内压缩文件,而我的情况下zip文件已经存在。R Shiny:下载现有文件

library(shiny) 

app <- list(
    ui = fluidPage(
    titlePanel(""), 
    sidebarLayout(
     sidebarPanel(
     downloadButton("downloadData", label = "Download") 
    ), 
     mainPanel(h6("Sample download", align = "center")) 
    ) 
), 

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

     content <- function(file) { 
     # not sure what to put here??? 
     }, 
     contentType = "application/zip" 
    ) 
    } 
) 

shiny::runApp(app) 

回答

19

不同的文件处理功能打交道了之后我才发现,file.copy可以用来下载文件。

我改变downloadHandler到:

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

    content <- function(file) { 
    file.copy("out.zip", file) 
    }, 
    contentType = "application/zip" 
)