R блестящий триггер downloadHandler при загрузке страницы - PullRequest
0 голосов
/ 25 сентября 2019

Я создаю приложение, которое работает регулярно, когда в URL-запросе ничего не указывается, однако, если там указана определенная строка, оно должно немедленно загрузить файл.Загрузка работает нормально, но когда она запускается при запуске, она возвращает файл 'download.htm' вместо .csv.Воспроизводимый пример не запрашивает URL-адрес, а вызывает наблюдение:

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs()
  ,downloadButton("downloadData", "Download")
)

server <- function(input, output) {

  data <- mtcars

  observe({
    print("click MacClickFace")
    runjs("document.getElementById('downloadData').click();")
  })  

  output$downloadData <- downloadHandler(
    filename = function() {
      paste("data-", Sys.Date(), ".csv", sep="")
    },
    content = function(file) {
      write.csv(data, file)
    }
  )
}

shinyApp(ui, server)

Как вы можете инициировать загрузку при запуске или здесь происходят какие-то проблемы с безопасностью?

1 Ответ

1 голос
/ 25 сентября 2019

Вероятно, downloadHandler не готов.Вы можете использовать setTimeout(..., 0):

runjs("setTimeout(function(){document.getElementById('downloadData').click();},0);")
...