如何在Shiny中获取用户选择的文件夹路径(非文件路径)
Shiny获取用户选择文件夹路径实现方案
你当前代码使用的是shinyFiles包的文件选择配套逻辑,仅支持获取文件路径,要获取文件夹路径需要替换为包内置的目录选择专用组件,以下是可直接运行的完整代码:
library(shiny) library(shinyFiles) ui <- fluidPage( shinyDirButton( "Btn_GetDir", "选择文件夹", title = "请选择目标文件夹:", multiple = FALSE, buttonType = "default", class = NULL ), textOutput("txt_dir") ) server <- function(input, output, session){ volumes = getVolumes() observe({ shinyDirChoose(input, "Btn_GetDir", roots = volumes, session = session) if(!is.null(input$Btn_GetDir)){ dir_selected <- parseDirPath(volumes, input$Btn_GetDir) output$txt_dir <- renderText(as.character(dir_selected)) } }) } shinyApp(ui = ui, server = server)
核心改动点
- UI组件替换:将原文件选择按钮
shinyFilesButton替换为目录选择专用按钮shinyDirButton - 监听逻辑替换:将原文件选择监听函数
shinyFileChoose替换为目录选择监听函数shinyDirChoose - 解析逻辑替换:将原文件路径解析函数
parseFilePaths替换为目录专用解析函数parseDirPath,运行后即可直接输出选中文件夹的完整绝对路径
说明:函数
getVolumes()会自动识别当前系统所有可访问的存储位置,Windows环境下会自动枚举所有本地盘符,macOS/Linux环境下会自动识别根目录及外接挂载存储,无需额外做路径配置。
内容的提问来源于stack exchange,提问作者María Agustina Conrrero
相关产品推荐
相关产品推荐

