我在使用带模块的shinyFiles包时遇到问题。当我在没有模块的情况下使用它时工作正常。当我在模块中使用它时,我无法深入到目录中(其他线程没有正面答案):
#' @export
dirModule = function(input, output, session, fileRoot = NULL) {
root = c(C = "/")
shinyFileChoose(input, session$ns('files'), roots = root, session = session)
shinyDirChoose(input, session$ns("directory"), session=session, roots = c(home = '/home', root = '/'), filetypes=c(''))
shinyFileSave(input, session$ns("fileSave"), roots = root, session = session)
observeEvent(input$files, { print(parseFilePaths(root, input$files)$datapath) })
observeEvent(input$directory, { print(parseDirPath(root, input$directory)) })
observeEvent(input$fileSave, { print(parseSavePath(root, input$fileSave)$datapath) })
}
#' @export
dirModuleUI = function(id) {
ns = NS(id)
fluidPage(
fluidRow(
shinyFilesButton(ns('files'), label='File select', title='Please select a file', multiple=T),
shinyDirButton(ns("directory"), label="Directory select", title = "Select directory", FALSE),
shinySaveButton(ns("fileSave"), label = "File save", title = "Save file as", filetype=list(text='txt'))
)
)
}
答案 0 :(得分:0)
我遇到了同样的问题,并使用Github版本解决了。
您可以先install.packages('devtools')
安装devtools软件包,然后使用devtools::install_github("thomasp85/shinyFiles")
安装最新的shinyFiles软件包。
之后,只需在模块服务器函数中删除所有会话$ ns调用。
答案 1 :(得分:0)
类似的帖子here
这是名称空间问题。我在不同的R版本中多次停留在这里,这是R 3.6中的解决方案。
我无法在R 3.4中使用它,因为它始终无法导航到子文件夹中。
#' @export
dirModule = function(input, output, session, fileRoot = NULL) {
root = c(C = "/")
shinyFileChoose(input, 'files', roots = root, session = session)
shinyDirChoose(input, "directory", session=session, roots = c(home = '/home', root = '/'), filetypes=c(''))
shinyFileSave(input, "fileSave", roots = root, session = session)
observeEvent(input$files, { print(parseFilePaths(root, input$files)$datapath) })
observeEvent(input$directory, { print(parseDirPath(root, input$directory)) })
observeEvent(input$fileSave, { print(parseSavePath(root, input$fileSave)$datapath) })
}
#' @export
dirModuleUI = function(id) {
ns = NS(id)
fluidPage(
fluidRow(
shinyFilesButton(ns('files'), label='File select', title='Please select a file', multiple=T),
shinyDirButton(ns("directory"), label="Directory select", title = "Select directory", FALSE),
shinySaveButton(ns("fileSave"), label = "File save", title = "Save file as", filetype=list(text='txt'))
)
)
}