R Shiny - selectInput的inputfile可重置

时间:2016-03-21 22:32:24

标签: r file input shiny

我真的需要一个帮助,因为我完全迷失了,我找到了所有我能找到的东西。我有一个selectInput,我需要为每个可能的选择加载一个表。不幸的是,当我连续两次使用相同的文件时,输入文件没有被触发,我无法第二次加载文件。我无法相信我是第一个解决这个问题的人...... 这就是我发现的尽可能解决方案,但它似乎不起作用how can I update a shiny fileinput

任何暗示都将非常受欢迎

library(shiny)
runApp(list(

  ui = bootstrapPage(
    tags$script('Shiny.addCustomMessageHandler("resetFileInputHandler", function(x) {   
           var el = $("#" + x);
           el.replaceWith(el = el.clone(true));
           var id = "#" + x + "_progress";     
           $(id).css("visibility", "hidden");
           });'
           ),

    sidebarPanel(
      fileInput("file1", NULL, width="80%"),

      selectInput('uploadFormat', label = "Select upload format", 
        choices = c(
            "Option 1" = 'f1',
            "Option 2" = 'f2',
            "Option 3" = 'f3'),
        selected = 'f1')

    ),

    mainPanel(
      verbatimTextOutput("summary"),
      uiOutput("Table")
    )
  ),

  server = function(input, output, session) {
    userEnv <- new.env()
    userEnv$tablecsv <- NULL

    observe({
      input$file1
      input$uploadFormat
      f <- input$uploadFormat
      if (!is.null(input$file1))
      if (is.null(userEnv$tablecsv[[f]]))
        (userEnv$tablecsv[[f]] <- read.table(input$file1$name, header = FALSE, sep=";", dec="."))
      session$sendCustomMessage(type = "resetFileInputHandler", "file1")
      T <- userEnv$tablecsv[[f]]
      output$Table <- renderTable({T})
    })

    output$summary <- renderText({
      return(paste("Uploaded file: ", input$file1$name))
    })
  }
))

0 个答案:

没有答案