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

Posted

技术标签:

【中文标题】在 Shiny 应用中存储用户上传的数据【英文标题】:Storing data uploaded by a user in Shiny app 【发布时间】:2016-12-27 15:13:29 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

您需要将上传的文件从临时目录 ($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)

【讨论】:

只是一个小补充:我建议从我的博客而不是从 r-bloggers 阅读它,因为自发布以来我已经多次更新文章 deanattali.com/blog/shiny-persistent-data-storage

以上是关于在 Shiny 应用中存储用户上传的数据的主要内容,如果未能解决你的问题,请参考以下文章

将一个用户的图像上传到 Firebase 存储时,数据库中每个用户的图像链接都会更新

当用户上传到 S3 存储桶时收到通知? [复制]

R Shiny - 使用 csv 中的数据和用户 numericInput 进行计算

如何让用户直接把图片上传到对象存储 S3

如何在 Shiny 中使用 textInput 来命名上传数据框的列

阿里云的OSS对象存储