Shiny(R):将selectInput中的选择下载到本地计算机

时间:2015-07-13 18:14:26

标签: r shiny

我正在尝试创建一个闪亮的应用程序,用户可以在其中查看目录中的文件列表,选择其中一个文件,然后将其下载到他们的计算机。我可能过于复杂了,但我似乎无法找到解决方案。

ui.R

afterEach

server.R

filenames <- list.files(path=".",pattern="\\.txt")
shinyUI(navbarPage("Download page",
tabPanel("Download",
sidebarLayout(
sidebarPanel(
selectInput("filenames", "Select the file you want to download:", filenames), downloadButton('downloadData', 'Download')
),

mainPanel(
p("Preview of sheet."),
tableOutput('table')
)))))

当我运行应用程序时,我可以查看目录中的文件列表,但下载功能不会导致所选文件被下载。

1 个答案:

答案 0 :(得分:1)

假设您的工作目录中有一堆'csv'文件,下面的代码将列出并预览'csv'文件并将所选文件下载到您想要的目录。

<强> ui.R

shinyUI(navbarPage("Download page",
tabPanel("Download",
sidebarLayout(
      sidebarPanel(
           selectInput("filenames", "Select the file you want to download:", list.files(pattern = '.csv')), 
           downloadButton('downloadData', 'Download')),
      mainPanel(
         p("Preview of sheet."),
      tableOutput('table')
)))))

<强> server.R

library(shiny)

shinyServer(function(input, output) {

  datasetInput <- reactive({
    switch(input$filenames,
           filenames)
  })

  output$table <- renderTable({
    read.csv(input$filenames, header=TRUE)
  })


  output$downloadData <- downloadHandler(
    filename = function() {input$filenames},
    content = function(file) {write.csv(read.csv(input$filenames, header=TRUE),file)}
  )})