File Upload dengan fileInput
Penjelasan
fileInput(inputId, label) menampilkan tombol upload file di UI. Setelah user memilih file, input$inputId di server berisi data frame kecil dengan kolom name (nama file asli), size (ukuran dalam byte), type (MIME type), dan datapath (lokasi file sementara di server tempat isinya bisa dibaca, misalnya lewat read.csv(input$file$datapath)). Karena input$file bisa NULL sebelum user memilih apapun, hampir selalu perlu dipasangkan dengan req(input$file) di awal blok reactive supaya aplikasi tidak error saat pertama dimuat.
Contoh Konsep
library(shiny)
ui <- fluidPage(
fileInput("file_csv", "Upload file CSV:", accept = ".csv"),
tableOutput("pratinjau")
)
server <- function(input, output) {
output$pratinjau <- renderTable({
req(input$file_csv)
data <- read.csv(input$file_csv$datapath)
head(data, 5)
})
}
shinyApp(ui = ui, server = server)
Praktikum
Lengkapi server agar menampilkan jumlah baris dari file CSV yang diupload lewat input 'file_data'.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Batasi jenis file yang diterima lewat parameter accept (misalnya accept = c(".csv", ".xlsx")), dan pertimbangkan validasi ukuran file dengan opsi global options(shiny.maxRequestSize = ...) kalau file bisa besar.