2

RELATED: Display selected folder path in Shiny

I cannot receive the file path from shinyFileChoose to use it in another function in anyway. I have tried the following approach according to the manual and the related thread mentioned above, but I still get nothing...

I simply want the absolute file path to the file user chooses so that I can use it in my program later on (in several different functions).

ui <- fluidPage(

   titlePanel("File Browser"),

   sidebarLayout(
      sidebarPanel(

        shinyFilesButton('files', label = 'Select', title = 'Please select a 
                          file', multiple = FALSE),
        verbatimTextOutput("filechosen")
      ),

      mainPanel(
      )
   )
)


server <- function(input, output) {

   shinyFileChoose(input, 'files', root = c(root = '/home/guest/test_data'),          
   filetypes = c('', "xml", "txt"))

   file <- reactive(input$files)
   output$filechosen <- renderText({
     parseFilePaths(c(home = "/home/guest/test_data"), file())
   })

}   
shinyApp(ui = ui, server = server)

Error: argument 1 (type 'list') cannot be handled by 'cat'

paropunam
  • 488
  • 2
  • 11

1 Answers1

3

because the parseFilePaths output is a 1 row dataframe, you should specific the column and change it to character, so it will be able to show in renderText

Try :

library(shinyFiles)
ui <- fluidPage(

  titlePanel("File Browser"),

  sidebarLayout(
    sidebarPanel(

      shinyFilesButton('files', label = 'Select', title = 'Please select a 
                       file', multiple = FALSE),
      verbatimTextOutput("filechosen")
      ),

    mainPanel(
    )
  )
  )


server <- function(input, output) {

  shinyFileChoose(input, 'files', root = c(root = '/home/guest/test_data'),
                  filetypes = c('', "xml", "txt"))

  file <- reactive(input$files)
  output$filechosen <- renderText({

    as.character(parseFilePaths(c(home = "/home/guest/test_data"),file())$datapath)
    # Either is fine
    # parseFilePaths(c(home = "/home/guest/test_data"),file())$datapath,stringAsFactors=F)
  })

}   
shinyApp(ui = ui, server = server)
Jim Chen
  • 3,262
  • 3
  • 21
  • 35