首页 > 解决方案 > 使用 fileInput (R shiny) 之类的函数获取文件的原始名称

问题描述

我想在浏览器中选择一些文件,就像fileInput在 Shiny 中一样,但我只需要将它们的路径作为字符而不需要其他任何东西。我不想上传它们(但无论如何都没有问题)。当我使用时fileInput,结果是data.frame包含临时文件夹中文件的路径,名称为 0.csv、1.txt、2.pdf ......但我需要原始文件名(有或没有完整路径)。有没有办法以快速和“非黑客”的方式实现这一目标?

标签: rshiny

解决方案


这不可能有一个非常重要的原因:安全性

JavaScript无法访问文件 System,因此您将无法获取用户的完整路径。一种选择是您强制您的用户使用路径,但是……他当然可以躺在那里。也许这样做

你只能这样使用它:

library(shiny)


ui <- fluidPage(
  tags$h1("Test"),
  fileInput("file1", "Choose CSV File",
            accept = c(
              "text/csv",
              "text/comma-separated-values,text/plain",
              ".csv")
  ),
  textInput("path", "Please enter the full path of your file"),
  tableOutput("pathtable")
)


server <- function(input, output, session) {


  testdf <- reactive({

      data.frame(
        ID = 1,
        file = input$path
      )
  })

  output$pathtable <- renderTable({

    if(input$path == "") {
      return(NULL)
    } else {
      testdf()
    }

  })


}

shinyApp(ui = ui, server = server)

推荐阅读