我的闪亮应用的www目录中有一个PDF。我希望该文件可供下载。我怎么能这样做。
下载示例效果很好,但不知道如何使用它从www目录下载PDF。
## Only run examples in interactive R sessions
if (interactive()) {
ui <- fluidPage(
downloadLink("downloadData", "Download")
)
server <- function(input, output) {
# Our dataset
data <- mtcars
output$downloadData <- downloadHandler(
filename = function() {
paste("data-", Sys.Date(), ".csv", sep="")
},
content = function(file) {
write.csv(data, file)
}
)
}
shinyApp(ui, server)
}
答案 0 :(得分:8)
查看downloadHandler
函数documentation,它有两个没有默认值的参数:filename和content。
filename 是basecaly将要下载的文件的名称。它不属于一个功能。 filename = "your-pdf-name.pdf"
的作用与在无参数函数中定义它一样多。
内容会创建一个包含要下载内容的临时文件。在大多数情况下,您将创建一个文件,该文件将通过您在应用程序中创建的内容来实现。
这不是你的情况,我的解决方案在Brasil中提供了一个我们称之为“gambiarra”的东西:它将你要下载的文件复制到downloadHandler
闪亮需要的临时文件中。 (我尝试将其定义为文件的路径,但它不起作用)
ui <- fluidPage(
downloadLink("downloadData", "Download")
)
server <- function(input, output) {
output$downloadData <- downloadHandler(
filename = "your-pdf-name.pdf",
content = function(file) {
file.copy("www/teste.pdf", file)
}
)
}
shinyApp(ui, server)
答案 1 :(得分:0)
如果文件位于 www
文件夹中,那么您只需在 UI 中提供指向它的链接
... (in UI)
tags$a("Click here to get the PDF", href="your-pdf-name.pdf")
...
如果文件名在开始时未知,则使用 uiOutput/renderUI 并在生成时将 rv$filename 设置为文件名。
... (in UI)
uiOutput("dlURL")
...
... (in server)
rv <- reactiveValues(filename="")
output$dlURL <- renderUI({
tags$a("Click here to get the file", href=rv$filename)
})
...