r - R Shiny:输出更改时如何自动开始下载
问题描述
我想生成数据并自动下载。我创建了一个“生成数据”按钮。预计当我单击此按钮时,它将生成数据并自动单击“下载”按钮,因此将自动下载生成的数据。
library(shiny)
library(shinyalert)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
useShinyalert(),
actionButton("gener.data", "Generate Data"),
downloadButton("downloadData")
)
server <- function(input, output, session) {
observeEvent(input$gener.data, {
test_data = data.frame( No=c(1,2,3),Name=c("R","RR","RRR") )
test_data2 = data.frame( No=c(3,2,1),Name=c("RRR","RR","R") )
output$downloadData <- downloadHandler(
filename = function() {
paste("dataset-", ".zip", sep="")
},
content = function(file) {
tmpdir <- tempdir()
contain_filename <- c( "test.csv", "test2.rds" )
write.csv( test_data , contain_filename[1] )
saveRDS( test_data2, contain_filename[2] )
zip(zipfile=file, files= contain_filename )
},contentType = "application/zip"
)
#auto click the downloadData button
runjs("$('#downloadData')[0].click();")
#show message
shinyalert(
title = 'Compelete!',type='success',
confirmButtonText = "OK"
)
})
}
shinyApp(ui, server)
实际上,当我单击“生成数据”按钮时,它会下载 html 文件,而不是预期的数据。似乎在生成输出数据之前执行了js代码。
生成输出后如何自动单击“下载数据”?或者如何在输出更改后立即自动单击“下载数据”?
解决方案
推荐阅读
- c# - 如何在 switch 语句中再次重新运行代码
- javascript - 为什么第二次将相同的数据写入 IndexedDB 总是变慢?
- assembly - 如何在 MIPS 中使用 ASCII 表?
- bash - Bash 脚本:如何使用目录和文件名打开 Kate?
- android - 滚动到新帖子时出现错误 IndexOutOfBoundsException
- ios - iOS appstore connect 分阶段发布
- php - 在最近更新的帖子中显示修改日期,Wp 查询
- jitsi - 如何将jitsi iframe中的共享链接更改为另一个域?
- python - 如何在不退出主循环的情况下停止倒计时并重置起始值?
- sql - BigQuery - 比较源表和目标表并仅插入新记录