【问题标题】:Download a zip file and extract a specific file in Shiny App下载 zip 文件并在 Shiny App 中提取特定文件
【发布时间】:2020-06-30 08:24:23
【问题描述】:

我有一个 RShiny 应用程序,我使用 aws.s3 库从 s3 存储桶中获取一个 zip 文件。我在这个 zip 存档中有一个特定的文件,用户将在单击 downloadButton 时下载该文件。

下面是我的服务器部分的sn-p代码

  rvalues <- reactiveValues(r = file())

  observe({
    rvalues$r <- tempfile(fileext = paste0(".", tools::file_ext("MyArchive.zip")))
    r <- save_object(bucket = MyBucket, 
                     object = "MyArchive.zip", 
                     file = rvalues$r, 
                     key = accesskey, 
                     secret = secretKey, 
                     region = region)
  })
 
  output$download <- downloadHandler(
    filename = function() {
      "Sample.json"
    },
    content = function(file) {
      unzip(rvalues$r,"Sample.json")
    }
  )

我正在创建一个临时文件并将 s3 中的 zip 文件保存到该临时文件中。从这个临时文件中,我解压缩我的特定文件并将其传递给下载处理程序函数。出于某种原因,这不起作用。非常感谢任何帮助/指导!

【问题讨论】:

    标签: r amazon-s3 shiny


    【解决方案1】:

    我会尝试以下代码(我没有尝试过,因为您没有提供可重现的示例):

      output$download <- downloadHandler(
        filename = function() {
          "Sample.json"
        },
        content = function(file) {
          filepath <- unzip(rvalues$r,"Sample.json")
          file.copy(filepath, file)
        }
      ) 
    

    【讨论】:

    • 抱歉,我知道没有开放的 s3 存储桶可以提供完全可重现的示例。我试过你的,它不起作用。反应值 r 似乎保存了文件位置,但在下载处理程序中解压缩不起作用。
    • @SiddharthArthi 你收到错误消息了吗?它说什么?否则,你会得到什么样的错误?
    • 我没有收到任何错误,但是下载失败以文件名“download.htm”开始
    • @SiddharthArthi 嗯...你能试试file.rename而不是file.copy吗?您确定 zip 中有一个名为 Sample.json 的文件吗?
    • file.copy 确实有效!显然我一直在 UI 中使用 actionButton 而不是 downloadButton :)
    猜你喜欢
    • 2022-10-24
    • 2012-03-08
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    相关资源
    最近更新 更多