我正在构建一个Shiny app(R),允许用户上传自己的数据(假设标准文件格式)。用户界面类似于给定here的示例。我希望能够在用户上传数据后永久存储该数据,以便其他用户也可以访问它。
例如,user1上传file1.txt,应用程序允许分析此文件。 User2上传file2.txt。现在该应用的任何未来用户都可以访问用户1和2上传的文件,并且能够上传更多文件,这些文件可供其他用户访问。有没有办法在Shiny中做到这一点?
答案 0 :(得分:4)
您需要将上传的文件从临时目录($ datapath)复制到永久位置(即另一个目录)。然后,您可以使用dir()来获取用户文件列表。
如果您需要永久存储,请查看http://deanattali.com/blog/shiny-persistent-data-storage/
对于本地存储,请参阅下面的示例。
library(shiny)
ui <- shinyUI(fluidPage(
sidebarLayout(
sidebarPanel(
fileInput('file1', 'Select file to upload' )
),
mainPanel(
h4('List of uploaded files:')
,verbatimTextOutput('fileList')
)
))
)
server <- shinyServer(function(input, output) {
observe({
if (is.null(input$file1) ) { return(NULL) }
file.copy(from = input$file1$datapath, to = paste0('userFile_',input$file1$name ) )
})
output$fileList <- renderText({
input$file1
dir(pattern = 'userFile_')
})
})
shinyApp(ui, server)