2014-11-12 17 views
5

non posso fare di lucido downloadHandler per emettere il file zip:Shiny: scaricare archivio 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) 
    } 
) 
}) 

E il semplice ui.R:

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

Sto avendo uscita bello, tranne l'errore :

> 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 

E nessuna finestra di salvataggio per salvare l'archivio. Ma nella cartella temp viene presentato l'archivio corretto. Come condividere correttamente l'archivio?

+0

provare il 'libreria (Rcompression)' 'funzione zip' per vedere se può aiutare http://stackoverflow.com/questions/4624360/creating-zip-file -from-folders – Keniajin

risposta

6

Si sta utilizzando <- all'interno della funzione downloadHandler e si dovrebbe utilizzare =. Inoltre potrebbe essere necessario definire la 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")) 
    ) 
)) 
) 
+0

Ho notato che il download zip non funziona per me se utilizzo il browser Rstudio. Quindi potresti volerlo provare in un browser esterno per essere sicuro. –

Problemi correlati