Study
Shiny

Download Handler

Penjelasan

downloadButton(outputId, label) atau downloadLink() di UI dipasangkan dengan downloadHandler(filename, content) di server. filename adalah fungsi yang mengembalikan nama file hasil download (bisa dinamis, misalnya menyertakan tanggal), sedangkan content adalah fungsi yang menerima satu parameter (path file sementara) dan bertugas MENULISKAN data ke path tersebut, misalnya lewat write.csv(data, file) atau ggsave(file, plot). Shiny yang mengurus sisanya — mengirim file itu ke browser user sebagai download.

Contoh Konsep

library(shiny)

ui <- fluidPage(
  downloadButton("unduh_data", "Download CSV")
)

server <- function(input, output) {
  output$unduh_data <- downloadHandler(
    filename = function() {
      paste0("data-mobil-", Sys.Date(), ".csv")
    },
    content = function(file) {
      write.csv(mtcars, file, row.names = FALSE)
    }
  )
}

shinyApp(ui = ui, server = server)

Praktikum

Lengkapi downloadHandler agar mengunduh subset mtcars yang mpg-nya di atas input 'mpg_min', dengan nama file 'hasil_filter.csv'.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

downloadButton biasanya tidak butuh req() manual karena browser hanya mengirim request download saat tombolnya diklik — tapi tetap pastikan reactive data yang dipakai di dalam content sudah valid supaya tidak menghasilkan file kosong/rusak.