【问题标题】:R Shiny: Download existing fileR Shiny:下载现有文件
【发布时间】:2016-01-29 17:34:09
【问题描述】:

假设我在闪亮的应用程序(即位于服务器上)中有一个现有的 zip 文件 (out.zip)。我希望用户能够下载此文件。这个问题与this one 非常相似。但是,该问题会压缩 downloadHandler 中的文件,而在我的情况下 zip 文件已经存在。

library(shiny)

app <- list(
  ui = fluidPage(
    titlePanel(""),
    sidebarLayout(
      sidebarPanel(
        downloadButton("downloadData", label = "Download")
      ),
      mainPanel(h6("Sample download", align = "center"))
    )
  ),

  server = function(input, output) {  
    output$downloadData <- downloadHandler(
      filename <- function() {
        paste("output", "zip", sep=".")
      },

      content <- function(file) {
        # not sure what to put here???
      },
      contentType = "application/zip"
    )
  }
)

shiny::runApp(app)

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    在探索了不同的文件处理函数后,我发现file.copy 可以用来下载文件。

    我把downloadHandler改成:

    output$downloadData <- downloadHandler(
      filename <- function() {
        paste("output", "zip", sep=".")
      },
    
      content <- function(file) {
        file.copy("out.zip", file)
      },
      contentType = "application/zip"
    )
    

    【讨论】:

    • 您的压缩文件在哪里?在 www 文件夹中还是可以在任何文件夹中?
    • @zx8754 它应该是您指定的任何文件夹。您只需要提供要保存的路径即可。
    • 谢谢。澄清一下,“out.zip”是我的应用程序文件夹之一中存在的文件,对吧?
    • 此解决方案是否在本地工作,例如在通过 R Studio 运行 Shiny 时还是仅在生产环境中工作?在我的情况下,页面的 HTML 被下载
    【解决方案2】:

    几年后,但我认为如果您不需要动态文件生成,将文件放在 Shiny 应用程序的 www/ 文件夹中,有一种更简单的方法:

    |
    |- app.R
    |- www/
           - downloadme.csv
    

    然后,当您的 Shiny 应用程序上线时,该文件在 shiny-url.com/downloadme.csv 可用 - 或在本地测试时 127.0.0.1:1221/downloadme.csv

    例如在 Shiny ui 中使用:

    # in ui somewhere
    ...
      a(href="downloadme.csv", "Download CSV", download=NA, target="_blank")
    ...
    

    【讨论】:

    • 感谢您提供此答案。如果我不需要动态下载,则无需过于复杂。
    • 感谢您的精彩回答!
    • 有没有办法通过使用“~/data/downloadme.csv”之类的东西来获得不在 www/ 文件夹中的其他地方的路径?
    • 除非您将其复制到 www/ 文件夹中,该文件夹是保存所有 web 文件的文件夹
    • 美丽答案
    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 2020-10-29
    • 1970-01-01
    • 2021-09-03
    • 2017-03-24
    • 1970-01-01
    相关资源
    最近更新 更多