R闪亮通过选中复选框下载文件
Posted
技术标签:
【中文标题】R闪亮通过选中复选框下载文件【英文标题】:R shiny to download files by selecting the checkbox 【发布时间】: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)
【问题讨论】:
这可能相当简单,但使用minimal reproducible example 会更容易做到(例如,不使用硬编码的主目录)。 【参考方案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()
设置工作目录,以便能够使用相对路径。您收到的错误是因为找不到该文件。我编辑了答案。以上是关于R闪亮通过选中复选框下载文件的主要内容,如果未能解决你的问题,请参考以下文章