【问题标题】:R shiny to download files by selecting the checkboxR闪亮通过选中复选框下载文件
【发布时间】:2021-09-12 05:13:36
【问题描述】:

这段代码基本上来自 UI 页面,我想在其中通过复选框选择文件名,然后选择这些文件名,然后单击下载按钮选择的文件将被下载。我被困在 UI 我无法在 UI 上获得这些复选框。 它显示输出为

[object] [Object]

代码如下-

ui <- fluidPage(
verbatimTextOutput("links_list")
)

server <- function(input, output, session) {
get.files <- reactive({
list.files("/Users/harshmeetsingh/Downloads/")
})  

obsList <- list()

output$links_list <- renderUI({    
lapply(as.list(1:length(get.files())), function(i)
{
  btName <- get.files()[i]
print(btName)
# creates an observer only if it doesn't already exists
 if (is.null(obsList[[btName]])) {
 obsList[[btName]] <<- btName 
 }
fluidRow(checkboxInput(btName, get.files()[i])  )
 })
 })
output$downloadzip<-downloadHandler(
filename = function(){
  paste0("Extract.zip")
},
content = function(file){
  files <- NULL;
  for (i in 1:length(obsList)){
    if(input[[obsList[[i]]]])
      files <- c(paste("output_file/",obsList[[i]],sep=""),files)
  }
  #create the zip file
  zip(file,files)
},
contentType = "application/zip"
)

 tempText <- eventReactive({input$TempTest},{ 
l<-c()
for (i in 1:length(obsList)){
  
  if(input[[obsList[[i]]]])
    l<-c(l,paste("output_file/",obsList[[i]],sep=""))
}

return(paste(l) )
},
ignoreInit = TRUE)

output$Temp <-  renderPrint({ tempText()}) 



}

shinyApp(ui=ui,server=server)

【问题讨论】:

标签: r shiny shinydashboard shiny-server shiny-reactivity


【解决方案1】:

我们可以使用checkboxGroupInput() 来选择所有文件。 input$files_chosen 将是一个包含所有选定文件名的列表。

请注意,此应用显示主目录中的文件。这可以通过更改setwd() 中提供的路径进行修改。

应用程序:

library(shiny)

#to use relative paths inside zip function
setwd('~')

ui <- fluidPage(
  downloadButton('downloadzip'),
  uiOutput("links_list")
)

server <- function(input, output, session) {
  get.files <- reactive({
    list.files()
  })  
  
  output$links_list <- renderUI({checkboxGroupInput(inputId = 'files_chosen',
                                                    label = 'Choose Files',
                                                    choices = get.files())
  })
  
  output$downloadzip <- downloadHandler(
    filename = function(){
      "Extract.zip"
    },
    content = function(file){
      #create the paths to look for the files.
      files <- input$files_chosen 
      #create the zip file
      zip(zipfile = file, files = files)
    },
    contentType = "application/zip"
  )
}

shinyApp(ui=ui,server=server)

【讨论】:

  • 这个不适用于 CSV 文件,请您检查一下 CSV 文件吗?
  • @harshmeetchandhok 我使用该应用程序压缩了一些 .csv 文件并且它可以工作。你遇到了什么错误?
  • 我提供了我的工作目录,然后选择了 csvs,然后在 r studio 中下载时出现此错误 zip 警告:名称不匹配:table_from_page_12.csv zip 警告:名称不匹配:table_from_page_124.csv zip 错误:无去做! (尝试:zip -r9X /var/folders/dq/j0g3xb252n7_c5pq4gvm8dqc0000gp/T//RtmpoGsqJq/filecea64a8b9a1.zip .-i table_from_page_12.csv table_from_page_124.csv)
  • 您可以使用setwd() 设置工作目录,以便能够使用相对路径。您收到的错误是因为找不到该文件。我编辑了答案。
猜你喜欢
  • 2019-09-27
  • 2019-03-09
  • 2017-11-03
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
  • 2018-10-17
  • 1970-01-01
  • 2021-02-14
相关资源
最近更新 更多