繁体   English   中英

将包含多个文件的zip文件上传到闪亮的应用程序中

[英]Uploading zip with multiple files into a shiny application

我试图通过我的闪亮应用程序上传一个zip文件,其中包含一堆xml文件,然后对其进行处理。 我的代码如下所示:

library(shiny)

parse_xml <-function(FileName) {
  a <- xmlParse(FileName)
  xmlToDataFrame(a, stringsAsFactors = FALSE) %>%
    fill(Description, Min, Max, id, StartDateTime,
         EndDateTime, .direction = "up") %>%
    na.omit()
}

ui <- fluidPage(
  column(width = 4,
         fileInput("upload", "Upload", accept = ".zip")),
  column(width = 4,
         br(),
         actionButton("process", "Process uploaded data"))
)

server <- function(input, output) {
  observeEvent(input$process, {
    files <- unzip(input$upload, list = TRUE)

    Data <- ldply(unz(input$upload, files$Name[2:length(files$Name)]), parse_xml)
  })
}

shinyApp(ui = ui, server = server)

在尝试解压缩文件的第一步,我已经收到一个错误:

Warning: Error in unzip: invalid zip name argument

有人对我该如何解决有任何想法吗?

UPD:通过将input$upload更改为input$upload$datapath ,解决了第一个错误。 新错误:

Error in unz: invalid 'description' argument

如果有人需要它,这就是我打算做的:

library(shiny)
library(dplyr)

parse_xml <-function(FileName) {
  a <- xmlParse(FileName)

  print(1)

  xmlToDataFrame(a, stringsAsFactors = FALSE) %>%
    fill(Description, Min, Max, id, StartDateTime,
         EndDateTime, .direction = "up") %>%
    na.omit()
}

ui <- fluidPage(
  column(width = 4,
         fileInput("upload", "Upload", accept = ".zip")),
  column(width = 4,
         br(),
         actionButton("process", "Process uploaded data"))
)

server <- function(input, output) {
  observeEvent(input$process, {
    files <- unzip(input$upload$datapath, list = TRUE)

    unzip_xml <- function(i) {parse_xml(readLines(unz(input$upload$datapath, files$Name[i])))}

    data <- lapply(1:length(files$Name), unzip_xml)

    data1 <- bind_rows(data)
  })
}

shinyApp(ui = ui, server = server)

它应该是files <- unzip(input$upload$name, list = TRUE)而不是unzip(input$upload, list = TRUE)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM