我的www
文件夹中有一个静态PDF文件,我想将其链接到用户界面downloadButton()
。似乎服务器端downloadHandler
需要填充content
选项,并且用于反应性生成的输出。
我知道我可以在UI端使用HTML标记tags$a('Download file.', href = 'foo.pdf')
链接到静态内容。
关于如何将两者放在一起的任何建议都会有所帮助。
答案 0 :(得分:7)
我猜你只想要一个按钮出现?您可以将class = 'btn'
添加到锚点。
以下示例显示了class = 'btn'
和没有。
library(shiny)
runApp(list(
ui = bootstrapPage(
numericInput('n', 'Number of obs', 100),
plotOutput('plot'),
tags$a(href = 'foo.pdf', class = "btn", icon("download"), 'Download file.'),
tags$a('Download file2.', href = 'foo2.pdf'),
downloadButton('downloadData', 'Download')
),
server = function(input, output) {
output$plot <- renderPlot({ hist(runif(input$n)) })
output$downloadData <- downloadHandler(
filename = function() {
paste('data-', Sys.Date(), '.csv', sep='')
},
content = function(con) {
write.csv(data, con)
}
)
}
))
要添加shiny
函数downloadHandler
之类的图标,请参阅fontawesome库。例如
这是闪亮功能使用http://fontawesome.io/icon/download/的图标。 Shiny有一个包装函数icon
来包含这些图标。
答案 1 :(得分:5)
可能会有所帮助:
content = function(file) {
file.copy('www/foo.pdf', file)
}
答案 2 :(得分:1)
在ui.R
和server.R
:
<强> ui.R 强>
downloadButton(
"statFile",
"Download static file"
)
<强> server.R 强>
output$statFile <- downloadHandler(
filename="example.txt", # desired file name on client
content=function(con) {
file.copy("file_name_on_server", con)
}
)