2015-10-29 90 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" 
)