使用诸如fileInput(R Shiny)之类的功能获取文件的原始名称

时间:2019-06-14 13:25:39

标签: r shiny

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

2 个答案:

答案 0 :(得分:1)

无法做到这一点有一个非常重要的原因:安全性

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)

答案 1 :(得分:0)

原始名称保存在变量中

input$file1$name

然而,可以通过

访问“真实”数据(已重命名为 OP 正确指出)
input$file1$datapath

其中 file1 是函数 fileInput() 的 InputId