r - 使用 fileInput (R shiny) 之类的函数获取文件的原始名称
问题描述
我想在浏览器中选择一些文件,就像fileInput
在 Shiny 中一样,但我只需要将它们的路径作为字符而不需要其他任何东西。我不想上传它们(但无论如何都没有问题)。当我使用时fileInput
,结果是data.frame
包含临时文件夹中文件的路径,名称为 0.csv、1.txt、2.pdf ......但我需要原始文件名(有或没有完整路径)。有没有办法以快速和“非黑客”的方式实现这一目标?
解决方案
这不可能有一个非常重要的原因:安全性
JavaScript无法访问文件 System,因此您将无法获取用户的完整路径。一种选择是您强制您的用户使用路径,但是……他当然可以躺在那里。也许这样做
你只能这样使用它:
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)
推荐阅读
- c++ - 多维数组的使用
- javascript - 找不到任何方法让 POST 请求工作 Reddit API - 403 错误
- php - PHP 和 GMail IMAP 连接失败
- javascript - 另一个文件中的异步函数没有被命中
- python - 如何将“2.6840000e+01”类型的数据转换为 Python 中的浮点数?
- c - OpenCL 本地 int 指针挂起 GPU,在 CPU 上工作正常
- docker - Bottlerocket OS 上的 AWS ECS 共享卷权限错误
- javascript - 有什么方法可以让 Vue3 中的 sessionStorage 响应式?
- go - 在golang中,import cycle not allowed,原理真的很好解决吗?
- c - 如何递归调用具有 void 函数作为 C 中的参数的函数?