这是我的闪亮应用程序的简单可复制示例。
library(shiny)
library(tidyverse)
library(aws.s3)
library(DT)
ui <- fluidPage(
DTOutput('table')
)
server <- function(input, output, session) {
get_bucket(
bucket = 'mybuckey',
key = "MYKEY",
secret = "MYSECRET"
)
tibble(name = c("A", "B", "C"),
file_key = c("sample_A.pdf", "sample_B.pdf", "sample_C.pdf")) -> df
output$table <- DT::renderDT({
DT::datatable(df)
})
}
shinyApp(ui, server)
我正在使用库(aws.s3)从s3存储桶访问文件,与给定的示例类似,相应的文件密钥存储在数据库中。我通常使用此功能将文件从s3存储桶传输到本地存储
s3_download <- function(file_key) {
save_object(file_key, file = file_key, bucket = "mybucket")
}
我想做的是将file_key列更改为一个闪亮应用程序中数据表中的下载按钮,单击该按钮应从s3在浏览器中下载文件。 我不想将文件存储在本地Shiny文件夹中,但是如果需要在Shiny中使用downloadhandler函数进行下载之前将文件存储在本地(那么这将不是问题)。有什么方法可以做到这一点,至少对于本地存储的文件而不是s3而言(至少可以解决我的大部分问题)。预先感谢。