2015-10-29 11 views
10

Załóżmy, że mam istniejący plik ZIP (out.zip) w mojej błyszczącej aplikacji (tj. Znajdującej się na serwerze). Chciałbym, aby użytkownik mógł pobrać ten plik. To pytanie jest bardzo podobne do this one. Jednak to pytanie zipuje pliki wewnątrz downloadHandler, podczas gdy plik zip już istnieje w moim przypadku.R Shiny: Pobierz istniejący plik

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) 

Odpowiedz

19

Po wywiercenie z różnymi funkcjami obsługi plików odkryłem, że file.copy mogą być wykorzystane, aby pobrać plik.

zmienić downloadHandler do:

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

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