使用像fileInput(R shiny)这样的函数获取文件的原始名称



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

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

JavaScript 对文件系统没有影响,因此您将无法获取用户的完整路径。一种选择是强制用户使用路径,但是...他当然可以躺在那里。也许这样做

您只能像这样使用它:

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)

原始名称保存在变量中

input$file1$name

但是,"真实"数据(正确指出重命名为OP(可以通过以下途径访问

input$file1$datapath

其中file1是函数fileInput()的输入 ID

最新更新