【问题标题】:Uploading multiple files from shiny app to google drive从闪亮的应用程序上传多个文件到谷歌驱动器
【发布时间】:2021-07-02 14:15:57
【问题描述】:

使用之前post 的建议,我能够弄清楚如何将单个文件从闪亮的应用程序上传到我的谷歌驱动器上的特定文件夹。这非常有效。不幸的是,当我尝试选择并上传多个文件时出现以下错误。任何帮助表示赞赏! “ if (!file.exists(media)) { 中的警告: 条件的长度 > 1 并且只使用第一个元素 警告:rationalize_path_name 中的错误:is_string(name) 不是 TRUE [没有可用的堆栈跟踪]"

下面是最小可重复的示例

library(googledrive)

ui <- fluidPage(
  fileInput(inputId = "file", 
            label = "Choose file to upload",
            accept = NULL, 
            multiple = TRUE)
)

server <- function(input, output) {

  observeEvent(input$file, {
    drive_upload(media = input$file$datapath,
                 name = input$file$name,
                 path = "my_folder")
  })
}

shinyApp(ui, server)

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    要上传多个文件,您需要对每个 input$file$datapathinput$file$name 对进行迭代:

      observeEvent(input$file, {
        mapply( function(datapath, name){
            drive_upload(media = datapath,
                         name = name,
                         path = "my_folder")},
          input$file$datapath,
          input$file$name)
      })
    

    【讨论】:

    • 效果很好@HubertL,非常感谢。
    • 不幸的是,我现在遇到了一个单独的问题。当我在 shinyapps.io 上运行我的闪亮应用程序时,它会部署,但是当我使用这种方法实际上传文件时,我会收到错误消息。警告:错误:无法获取 Google 凭据。我在这里阅读了gargle.r-lib.org/articles/auth-from-web.html,这导致我将“options(gargle_oob_default = TRUE)”添加到我的脚本中,但这似乎并不能解决问题。你知道如何解决这个@HubertL 吗?
    • 更新:已解决!我使用这篇相关文章 gargle.r-lib.org/articles/non-interactive-auth.html 特别是“项目级 OAuth 缓存”部分来解决问题。
    • 更新 2:不幸的是,它以某种方式再次停止工作。当我去上传文件时,它说。 “警告:rationalize_path_name 中的错误:找不到对象‘名称’”。有什么想法@HubertL?
    • 我不知道,祝你好运@ZachMargulies!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 2017-03-17
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    • 2021-11-22
    • 2019-08-04
    相关资源
    最近更新 更多