假设我的闪亮应用程序(即位于服务器上)有一个现有的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)
答案 0 :(得分:39)
在使用不同的文件处理函数后,我发现可以使用file.copy
来下载文件。
我将downloadHandler
更改为:
output$downloadData <- downloadHandler(
filename <- function() {
paste("output", "zip", sep=".")
},
content <- function(file) {
file.copy("out.zip", file)
},
contentType = "application/zip"
)
答案 1 :(得分:9)
几年后,但是如果您不需要动态文件生成,可以通过将文件放置在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")
...