【问题标题】:Getting file path from Shiny UI (Not just directory) using browse button without uploading the file使用浏览按钮从 Shiny UI(不仅仅是目录)获取文件路径而不上传文件
【发布时间】:2017-03-22 08:01:06
【问题描述】:

我需要在 R 中处理一个巨大的文件 (>500mb)。因此,我不是在 R 环境中加载如此大的文件,而是以特定行数的块处理文件,最后得到聚合值。

我需要用户指定文件(使用某种浏览功能),以便我可以将文件路径提供给我的算法

fileConnection <-file( "../output/name.txt", open="w")

有没有办法根据用户指定的地址从 Shiny UI 获取文件路径?我尝试了 ShinyFiles 包,但它只提供了可供选择的目录,而不是文件。

【问题讨论】:

  • 您可以使用fileInput 并使用参数input$inpuId$datapath 访问数据路径。
  • @SBista 欢迎回来:) ...当我提供文件输入时,用户界面实际上会上传文件。我不希望文件被上传(太大而且需要时间)。它只需要获取文件的路径。这可能吗?

标签: r shiny


【解决方案1】:

shinyFiles 包中提供了此功能。看看这个最小的例子:

library(shiny)
library(shinyFiles)
  
  
  ui <- fluidPage(
    shinyFilesButton("Btn_GetFile", "Choose a file" ,
                                    title = "Please select a file:", multiple = FALSE,
                          buttonType = "default", class = NULL),
                   
              textOutput("txt_file")     
                   )

  
  server <- function(input,output,session){
    
    volumes = getVolumes()
    observe({  
    shinyFileChoose(input, "Btn_GetFile", roots = volumes, session = session)
    
    if(!is.null(input$Btn_GetFile)){
      # browser()
      file_selected<-parseFilePaths(volumes, input$Btn_GetFile)
      output$txt_file <- renderText(as.character(file_selected$datapath))
    }
  })
  }
  shinyApp(ui = ui, server = server)

【讨论】:

  • 如果这种情况发生在浏览器而不是服务器端,有什么可能吗?
  • @Raha 由于安全原因,托管在服务器上时无法获取文件路径。
  • 如果我想将该文件名 (txt_file) 保存到一个变量中,以便在我的服务器函数中的函数调用中使用它怎么办?
  • 删除绒毛的编辑are fine。请不要进一步回滚。
猜你喜欢
  • 2011-09-11
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-16
  • 2018-02-13
  • 1970-01-01
相关资源
最近更新 更多