2015-10-29 8 views
10

Supponiamo di avere un file zip esistente (out.zip) nella mia app lucida (ad esempio, che si trova su un server). Mi piacerebbe che l'utente fosse in grado di scaricare questo file. Questa domanda è molto simile a this one. Tuttavia, tale domanda comprime i file all'interno dello downloadHandler mentre il file zip esiste già nel mio caso.R lucido: scarica il file esistente

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) 

risposta

19

Dopo aver frugato con diverse funzioni di gestione dei file ho scoperto che file.copy può essere utilizzato per scaricare il file.

posso cambiare downloadHandler a:

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

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