R 使用闪亮的fileInput仅获取路径

R 使用闪亮的fileInput仅获取路径,r,shiny,R,Shiny,我有一个非常大的固定宽度文件,我需要使用我的闪亮应用程序读取。我的程序当前的结构是ui.R包含一个文件输入,允许用户使用浏览器定位文件 在服务器端,我只捕获文件的路径,如下所示: path2file <- reactive({ infile <- input$path2file if (is.null(infile)) return(NULL) infile$datapath }) 谢谢您的建议。使用fileInput无法实现此功能。原因是出于

我有一个非常大的固定宽度文件,我需要使用我的闪亮应用程序读取。我的程序当前的结构是ui.R包含一个文件输入,允许用户使用浏览器定位文件

在服务器端,我只捕获文件的路径,如下所示:

path2file <- reactive({
    infile <- input$path2file
    if (is.null(infile)) return(NULL)    
    infile$datapath  
}) 

谢谢您的建议。

使用
fileInput
无法实现此功能。原因是出于安全原因,“fileInput”不向服务器提供本地路径信息。 使用
fileInput
用户在其本地计算机上的浏览器中导航,服务器端的结果文件是所选本地计算机的上载副本

作为替代方案,您可以使用
shinyFiles
包,它可以在服务器端导航。这意味着您可以获得本地计算机上的所有路径


第二种选择是简单的文本输入,它允许用户手动添加路径(确保检查服务器端的路径以避免出现任何问题)。

正如其他人指出的那样,出于安全考虑,shiny创建了一个tmp文件夹,其中所有加载的文件都被称为
fileinput
因此,您需要选择文件夹中所有感兴趣的文件,然后使用
…$datapath
但是请注意,
datapath
的每个元素都将包括目录信息和相应的文件名。因此,您需要修剪这些路径,使之只考虑tmp目录。这可以通过以下方式实现。。。 假设您将创建一个名为
phu
的对象,该对象将只包含您使用
fileInput(“upload”,NULL,buttonLabel=“upload…”,multiple=TRUE)调用的文件夹中的第一个文件(使用
input$upload$datapath[1]


你能不能请一个小的可复制的例子从上面的ui.R添加相关的代码块。你需要一个最小的工作示例吗?或者我提供的足够了吗?如果你还没有意识到,你得到的路径将是临时文件夹中的某个路径,而不是你的实际路径。也许你已经知道这一点,但只是说,以防你还没有意识到。如果您对获取实际路径而不是临时路径感兴趣,可以按照链接进行操作。@HaroldDoran您对这个问题有什么答案吗?
path2file <- reactive({
    infile <- input$path2file
    if (is.null(infile)) return(NULL)    
    scan(infile$datapath, n = 1)
    infile$datapath  
}) 
fileInput('path2dor', 'Choose the DOR .txt file to format',
        accept=c('text/csv', 
        'text/comma-separated-values,text/plain', '.csv')), 
phu<-as.character(input$upload$datapath[1])
phu<-substr(phu,1,nchar(phu)-5)
 library(shiny)
 library(tm)
    ui <- fluidPage(
              fileInput("upload", NULL, buttonLabel = "Upload...", multiple = TRUE),
              textOutput("Pdiretory")
            )
    
server <- function(input, output, session) {
    
      listdir <- eventReactive(input$upload, {
        phu<-as.character(input$upload$datapath[1])
        phu<-substr(phu,1,nchar(phu)-5)
        txt<-Corpus(DirSource(phu),readerControl = list(language = "en"))
        print(txt)
      })
      
      output$Pdiretory <- renderPrint ({
        listdir()
      })
      
    }
    shinyApp(ui = ui, server = server)