View source: R/dashCoreComponents.R
dccUpload | R Documentation |
Upload components allow your app to accept user-uploaded files via drag'n'drop
dccUpload(children=NULL, id=NULL, contents=NULL, filename=NULL,
last_modified=NULL, accept=NULL, disabled=NULL,
disable_click=NULL, max_size=NULL, min_size=NULL,
multiple=NULL, className=NULL, className_active=NULL,
className_reject=NULL, className_disabled=NULL, style=NULL,
style_active=NULL, style_reject=NULL, style_disabled=NULL,
loading_state=NULL)
children |
A list of or a singular dash component, string or number | character. Contents of the upload component |
id |
Character. The ID of this component, used to identify dash components in callbacks. The ID needs to be unique across all of the components in an app. |
contents |
Character | list of characters. The contents of the uploaded file as a binary string |
filename |
Character | list of characters. The name of the file(s) that was(were) uploaded. Note that this does not include the path of the file (for security reasons). |
last_modified |
Numeric | list of numerics. The last modified date of the file that was uploaded in unix time (seconds since 1970). |
accept |
Character. Allow specific types of files. See https://github.com/okonet/attr-accept for more information. Keep in mind that mime type determination is not reliable across platforms. CSV files, for example, are reported as text/plain under macOS but as application/vnd.ms-excel under Windows. In some cases there might not be a mime type set at all. See: https://github.com/react-dropzone/react-dropzone/issues/276 |
disabled |
Logical. Enable/disable the upload component entirely |
disable_click |
Logical. Disallow clicking on the component to open the file dialog |
max_size |
Numeric. Maximum file size in bytes. If '-1', then infinite |
min_size |
Numeric. Minimum file size in bytes |
multiple |
Logical. Allow dropping multiple files |
className |
Character. HTML class name of the component |
className_active |
Character. HTML class name of the component while active |
className_reject |
Character. HTML class name of the component if rejected |
className_disabled |
Character. HTML class name of the component if disabled |
style |
Named list. CSS styles to apply |
style_active |
Named list. CSS styles to apply while active |
style_reject |
Named list. CSS styles if rejected |
style_disabled |
Named list. CSS styles if disabled |
loading_state |
Lists containing elements 'is_loading', 'prop_name', 'component_name'. those elements have the following types: - is_loading (logical; optional): determines if the component is loading or not - prop_name (character; optional): holds which property is loading - component_name (character; optional): holds the name of the component that is loading. Object that holds the loading state object coming from dash-renderer |
named list of JSON elements corresponding to React.js properties and their values
if (interactive()) {
library(dash)
library(jsonlite)
app <- Dash$new()
app$layout(htmlDiv(list(
dccUpload(
id='upload-image',
children=htmlDiv(list(
'Drag and Drop or ',
htmlA('Select Files')
)),
style=list(
'height'= '60px',
'lineHeight'= '60px',
'borderWidth'= '1px',
'borderStyle'= 'dashed',
'borderRadius'= '5px',
'textAlign'= 'center',
'margin'= '10px'
),
# Allow multiple files to be uploaded
multiple=TRUE
),
htmlDiv(id='output-image-upload')
)))
parse_content = function(contents, filename, date) {
return(htmlDiv(list(
htmlH5(filename),
htmlH6(as.POSIXct(date, origin="1970-01-01")),
htmlImg(src=contents),
htmlHr(),
htmlDiv('Raw Content'),
htmlPre(paste(substr(toJSON(contents), 1, 100), "..."), style=list(
'whiteSpace'= 'pre-wrap',
'wordBreak'= 'break-all'
))
)))
}
app$callback(
output = list(id='output-image-upload', property = 'children'),
params = list(input(id = 'upload-image', property = 'contents'),
state(id = 'upload-image', property = 'filename'),
state(id = 'upload-image', property = 'last_modified')),
function(list_of_contents, list_of_names, list_of_dates) {
if (!is.null(list_of_contents) && !is.null(list_of_names) && !is.null(list_of_dates[[1]])) {
children = lapply(1:length(list_of_contents), function(x){
parse_content(list_of_contents[[x]], list_of_names[[x]], list_of_dates[[x]])
})
}
else {
children = "Upload a file to see the raw data."
}
return(children)
}
)
app$run_server()
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.