如何在Shiny的服务器功能中包含指向本地文件的HTML下载链接?
我有一个应用程序,基本上需要有链接来下载几个不同的PDF文件,这些文件存储在如何在Shiny的服务器功能中包含指向本地文件的HTML下载链接?,html,r,shiny,Html,R,Shiny,我有一个应用程序,基本上需要有链接来下载几个不同的PDF文件,这些文件存储在www文件夹中。我已经能够弄清楚如何在UI.R文件中生成这个链接,但是我需要在服务器上完成这项工作,我正在努力处理HTML 在UI文件中,我只使用了一个简单的 tags$a(href='Incarceration rate graph.pdf', target='blank', 'Incarceration', download = 'Incarceration rate graph.pdf') 这将下载所需的文件。但
www
文件夹中。我已经能够弄清楚如何在UI.R文件中生成这个链接,但是我需要在服务器上完成这项工作,我正在努力处理HTML
在UI文件中,我只使用了一个简单的
tags$a(href='Incarceration rate graph.pdf', target='blank', 'Incarceration', download = 'Incarceration rate graph.pdf')
这将下载所需的文件。但是,我尝试用以下最小的应用程序在服务器功能中复制它
library(shiny)
setwd("//ace/home/anambiar/PDF download test")
ui <- fluidPage(
htmlOutput("test1")
)
server <- function(input, output, session) {
output$test1 <- renderUI({
HTML("<a href='Incarceration rate graph.pdf' target = 'blank' download='Incarceration rate graph.pdf'> Incarceration rate </a>")
})
}
shinyApp(ui = ui, server = server)
库(闪亮)
setwd(“//ace/home/anambiar/PDF下载测试”)
ui库(闪亮)
ui库(闪亮)
ui如果你想生成50个链接,我建议你看看。是另一个很好的链接,它解释了如何使用purrr
从向量开始生成多个UI元素(downloadLink
s)(请参见“Purrifying Module Deployment”(Purrifying Module Deployment)一节)。如果您想生成50个链接,我建议您看看。是另一个很好的链接,它解释了如何使用purrr
从一个向量开始生成多个UI元素(downloadLink
s)(请参见“purrifying Module Deployment”一节)。Ah crap这是唯一的方法吗?我的最终应用程序将有大约50个链接,因此我希望不必为每个链接使用downloadHandler。您可以使用单个downloadHandler根据以前的选择提供不同的文件。看看为什么不压缩你的文件?你可以用一个下载处理程序来完成这个任务。@DSGym我不能压缩它们,因为它们总共大约有2个Gig大小。我想让用户选择下载哪个文件。更新了代码。这适合你的需要吗?如果是的话,我很高兴你能接受这个答案:-)啊,该死,这是唯一的办法吗?我的最终应用程序将有大约50个链接,因此我希望不必为每个链接使用downloadHandler。您可以使用单个downloadHandler根据以前的选择提供不同的文件。看看为什么不压缩你的文件?你可以用一个下载处理程序来完成这个任务。@DSGym我不能压缩它们,因为它们总共大约有2个Gig大小。我想让用户选择下载哪个文件。更新了代码。这适合你的需要吗?如果是,我很高兴你能接受这个答案:-)
library(shiny)
ui <- fluidPage(
tags$h1("Test"),
downloadLink('downloadData', 'Download'),
selectizeInput("files", "Select Files", choices = c("File A", "File B", "File C"), selected = "File A", multiple = FALSE)
)
server <- function(input, output, session) {
output$downloadData <- downloadHandler(
filename = function() {
paste('data-', input$files, "-", Sys.Date(), '.pdf', sep='')
},
content = function(file) {
file.copy(paste0(input$files, ".pdf"), file)
}
)
}
shinyApp(ui = ui, server = server)