存储用户在Shiny app中上传的数据

时间:2016-08-20 16:21:49

标签: r shiny

我正在构建一个Shiny app(R),允许用户上传自己的数据(假设标准文件格式)。用户界面类似于给定here的示例。我希望能够在用户上传数据后永久存储该数据,以便其他用户也可以访问它。

例如,user1上传file1.txt,应用程序允许分析此文件。 User2上传file2.txt。现在该应用的任何未来用户都可以访问用户1和2上传的文件,并且能够上传更多文件,这些文件可供其他用户访问。有没有办法在Shiny中做到这一点?

1 个答案:

答案 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)