Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用类似fileInput(R)的函数获取文件的原始名称_R_Shiny - Fatal编程技术网

使用类似fileInput(R)的函数获取文件的原始名称

使用类似fileInput(R)的函数获取文件的原始名称,r,shiny,R,Shiny,我想在浏览器中选择一些文件,如在Shiny中使用fileInput,但我只需要它们的路径作为字符,其他什么都不需要。我不想上传它们(但不管怎么说,上传都没有问题)。当我使用fileInput时,结果是一个data.frame包含临时文件夹中文件的路径,名称为0.csv、1.txt、2.pdf。。。但是我需要原始文件名(有或没有完整路径)。有没有办法以一种快速且“非黑客”的方式实现这一点?有一个非常重要的原因,说明这是不可能的:安全性 JavaScript没有文件系统的许可证,因此无法获取用户的完

我想在浏览器中选择一些文件,如在Shiny中使用
fileInput
,但我只需要它们的路径作为字符,其他什么都不需要。我不想上传它们(但不管怎么说,上传都没有问题)。当我使用
fileInput
时,结果是一个
data.frame
包含临时文件夹中文件的路径,名称为0.csv、1.txt、2.pdf。。。但是我需要原始文件名(有或没有完整路径)。有没有办法以一种快速且“非黑客”的方式实现这一点?

有一个非常重要的原因,说明这是不可能的:安全性

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)
库(闪亮)

ui原始名称保存在变量中

input$file1$name
但是,可以通过以下方式访问“真实”数据(重命名为OP正确指出的数据)

input$file1$datapath

其中,
file1
是函数
fileInput()

的输入,谢谢您有趣的回答。我很愚蠢,我问错了问题。我不需要整条路。我只需要正确的文件名,而不是数字和文件扩展名,如0.csv。。。很抱歉你好你解决了这个问题吗?我有一个图像问题(个别上传,必须是这样的)。它们都被命名为0.jpg,当我生成一个docx文档时,它们都是相同的第一个Imagelet假设,我想上传一个名为“test123.csv”的文件。结果应该是什么样子?您希望将结果存储或显示在哪里?结果应该是“temporarypath/test123.csv”,而不是“temporarypath/0.csv”,上传的文件真正存储在这里。我想在我的案例中添加几个文件,我想用我提到的格式创建一个包含所有路径的向量。你到底尝试了什么?
$name
属性应该为您提供浏览器提供的原始文件名,而
$datapath
属性为您提供上载文件的路径。对不起,我在周五修改了,我需要周末,我的问题很傻。在你的评论的帮助下,我现在可以用
$name
重命名文件,这就是我所需要的。非常感谢。