File Upload Control — fileInput
R/input-file.R
Description
Create a file upload control that can be used to upload one or more files.
Arguments
- inputId
The
input
slot that will be used to access the value.- label
Display label for the control, or
NULL
for no label.- multiple
Whether the user should be allowed to select and upload multiple files at once. Does not work on older browsers, including Internet Explorer 9 and earlier.
- accept
A character vector of "unique file type specifiers" which gives the browser a hint as to the type of file the server expects. Many browsers use this prevent the user from selecting an invalid file.
A unique file type specifier can be:
A case insensitive extension like
.csv
or.rds
.A valid MIME type, like
text/plain
orapplication/pdf
One of
audio/*
,video/*
, orimage/*
meaning any audio, video, or image type, respectively.
- width
The width of the input, e.g.
'400px'
, or'100%'
; seevalidateCssUnit()
.- buttonLabel
The label used on the button. Can be text or an HTML tag object.
- placeholder
The text to show before a file has been uploaded.
Details
Whenever a file upload completes, the corresponding input variable is set
to a dataframe. See the Server value
section.
Server value
A data.frame
that contains one row for each selected file, and following columns:
name
The filename provided by the web browser. This is not the path to read to get at the actual data that was uploaded (see
datapath
column).size
The size of the uploaded data, in bytes.
type
The MIME type reported by the browser (for example,
text/plain
), or empty string if the browser didn't know.datapath
The path to a temp file that contains the data that was uploaded. This file may be deleted if the user performs another upload operation.
See also
Other input elements:
actionButton()
,
checkboxGroupInput()
,
checkboxInput()
,
dateInput()
,
dateRangeInput()
,
numericInput()
,
passwordInput()
,
radioButtons()
,
selectInput()
,
sliderInput()
,
submitButton()
,
textAreaInput()
,
textInput()
,
varSelectInput()
Examples
## Only run examples in interactive R sessions
if (interactive()) {
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
fileInput("file1", "Choose CSV File", accept = ".csv"),
checkboxInput("header", "Header", TRUE)
),
mainPanel(
tableOutput("contents")
)
)
)
server <- function(input, output) {
output$contents <- renderTable({
file <- input$file1
ext <- tools::file_ext(file$datapath)
req(file)
validate(need(ext == "csv", "Please upload a csv file"))
read.csv(file$datapath, header = input$header)
})
}
shinyApp(ui, server)
}