You are here: Reference > JavaScript > client-side > HTML DOM > objects > nodes and tags > input:file

input:file object

Browser support:
Creates a file selector object with a single-line text input control and a browse button.
With this control you can allow file uploading to a server. Clicking on the browse button opens the operating system dependent file dialog that allows the user to select a file to upload.

By default, the file selection control only supports single file selection, but with the multiple property, you can allow users to select more than one file with one file selection control.

This control is one of the form controls.
The selected files can be submitted to a server if the following conditions are met:
  • A form element must contain the file selection control.
  • The action property of the container form must be set to the URL of the server.
  • The method property of the container form must be set to 'post'.
  • The encoding property of the container form must be set to 'multipart/form-data'.
  • The name property of the file selection control must be specified and non-empty.
For detailed information about file uploading in PHP, visit these sites: Handling file uploads (php.net), PHP File Upload (w3schools)
Sometimes the files selected with the file selection control need to be checked before submission. For that cases, you can use the value property. Not only the value property is suited to retrieve the selected files. With the files property, you can get a FileList collection that contains information about the selected files and provides access to their contents. Unfortunately the files property is not supported by all commonly used browsers.

Syntax:

Methods that return the object:
var inputObj = document.createElement ("input");   inputObj.type = "file"
The base interface, through which you can add new functionalities to the input:file object, is the HTMLInputElement interface.
If you want to see the HTML objects by categories, please visit this page.
HTML page for this element: input:file

Possible members:

Properties
Methods
Events
Style properties
accept
Sets or retrieves a comma-separated list of accepted content types.
accessKey
Sets or retrieves an access key to an element.
attributes
Represents a collection of attribute nodes that belong to an element.
baseURI
10
Returns the base URL for the object.
behaviorUrns
Represents a collection of the Uniform Resource Names for all behaviors attached to an element.
canHaveChildren
Retrieves a Boolean value that indicates whether the element can contain child elements.
canHaveHTML
Retrieves a Boolean value that indicates whether the element can contain HTML formatted text.
className
Sets or retrieves the style class or classes that belong to the element.
clientHeight
Returns the height of the visible area for an object, in pixels. The value contains the height with the padding, but it does not include the scrollBar, border, and the margin.
clientLeft
Returns the width of the left border in pixels.
clientTop
Returns the height of the top border in pixels.
clientWidth
Returns the width of the visible area for an object, in pixels. The value contains the width with the padding, but does not include the scrollBar, border, and the margin.
contentEditable
3
Sets or retrieves whether the contents of the object are editable.
currentStyle
Represents the computed style settings for an element.
dir
Sets or retrieves the text direction as related to the lang property.
disabled
Sets or retrieves the state of an object for user interaction.
files
3
Returns a FileList collection that represents the file or files selected with the current input:file element.
filters
Represents a collection of all filter objects applied to an element.
form
Returns a reference to the form element in which the object is placed.
forms
Represents a collection of all form elements in the current document.
hideFocus
Specifies or returns whether a dotted rectangle (focus rectangle) is drawn around an object while it has focus.
hspace
Specifies or returns the number of pixels to use as a margin at the left and right sides of the object.
id
Sets or retrieves a unique identifier for the object.
isContentEditable
Returns a Boolean value that indicates whether the contents of the object are editable by the user.
isDisabled
Returns a Boolean value that indicates whether the object is disabled.
isMultiLine
Returns a Boolean value that indicates whether the contents of an element can be multiline or not.
isTextEdit
Returns a Boolean value that indicates whether the createTextRange method can be used for the element.
lang
Specifies or returns the language of the element.
language
Sets or retrieves the scripting language for the current element. Use it only for the script element.
localName
9
Returns the local part of the qualified name of the current node.
multiple
3.6
Sets or retrieves whether more than one file can be selected with the current input:file element.
name
Sets or retrieves the name of a form control that affects the contents of the message submitted to the server.
namespaceURI
93.6
Sets or returns the namespace URI of the current node.
nextElementSibling
93.5
Returns a reference to the next child element of the current element's parent.
nextSibling
Returns a reference to the next child of the current element's parent.
nodeName
Returns the name of the current node.
nodeType
Returns an integer that indicates the type of the node.
nodeValue
Sets or returns the value of the current node.
offsetHeight
Returns the height of the visible area for an object, in pixels. The value contains the height with the padding, scrollBar, and the border, but does not include the margin.
offsetLeft
Returns the left position of an object relative to the left side of its offsetParent element, in pixels.
offsetParent
Returns a reference to the closest ancestor element in the DOM hierarchy from which the position of the current element is calculated.
offsetTop
Returns the top position of the object relative to the top side of its offsetParent element, in pixels.
offsetWidth
Returns the width of the visible area for an object, in pixels. The value contains the width with the padding, scrollBar, and the border, but does not include the margin.
outerHTML
Sets or retrieves the outer HTML content (the source code including the opening and closing tags) of an element.
outerText
Sets or returns the text content of an element including the text content of its descendants.
ownerDocument
Returns the document object that contains the current node.
parentElement
Returns the parent element of the object in the DOM hierarchy.
parentNode
Returns the parent element of the current node in the DOM hierarchy.
parentTextEdit
Returns the closest ancestor element of the current element in the DOM hierarchy that can be used to create a TextRange object.
previousElementSibling
93.5
Returns a reference to the previous child element of the current element's parent.
previousSibling
Returns a reference to the previous node of the current element's parent.
readOnly
Sets or retrieves whether the contents of the element are changeable.
readyState
Returns a string value that represents the state of the object.
runtimeStyle
Represents the overridden style settings for an element.
scopeName
Retrieves the local name of the namespace declared for the current element.
size
Specifies or returns the width of a control, in characters.
sourceIndex
Returns the position of the current object in the all collection of the document.
style
Represents the inline style settings for an element or a CSS rule.
tabIndex
Specifies or returns the tabbing order for keyboard navigation using the TAB key.
tagName
Returns the tag name of the current element.
tagUrn
Sets or retrieves the Uniform Resource Name (URN) of the namespace declared for the current element.
textLength
Returns the length of the text in a form control.
title
Specifies or returns a tooltip for an element.
type
Sets or retrieves the type of the input element.
uniqueID
Returns the unique identifier generated by the browser for the object.
unselectable
9
Sets or retrieves whether the selection process can start in an element's content.
value
Returns a string that contains the path or the name of the file or files selected with the current input:file element.
vspace
Specifies or returns the number of pixels to use as a margin at the top and bottom sides of an object.

Example HTML code 1:

This example illustrates the use of the file selection element:
<form method="post" enctype="multipart/form-data" action="#URL#">
    Select a file: <input type="file" name="uploadFile" size="25" />
    <br /><br />
    <input type="submit" value="Upload" />
</form>
Did you find this example helpful? yes no

Example HTML code 2:

This example checks the contents of the file selection element before submitting the form:
<head>
    <script type="text/javascript">
        function CheckAndSubmit () {
            var uploadForm = document.getElementById ("uploadForm");
            var uploadFile = document.getElementById ("uploadFile");

            if (uploadFile.value.length == 0) {
                alert ("Please specify the path to the file to upload!");
                return;
            }

            uploadForm.submit ();
        }
    </script>
</head>
<body>
    <form id="uploadForm" method="post" enctype="multipart/form-data" action="#URL#">
        Select a file: <input type="file" name="uploadFile" id="uploadFile" size="25" />
        <br /><br />
        <input type="button" value="Upload" onclick="CheckAndSubmit ()"/>
    </form>
</body>
Did you find this example helpful? yes no

Example HTML code 3:

This example illustrates the use of the MULTIPLE HTML attribute and the value and files JavaScript properties:
<head>
    <script type="text/javascript">
        function GetFileInfo () {
            var fileInput = document.getElementById ("fileInput");

            var message = "";
            if ('files' in fileInput) {
                if (fileInput.files.length == 0) {
                    message = "Please browse for one or more files.";
                } else {
                    for (var i = 0; i < fileInput.files.length; i++) {
                        message += "<br /><b>" + (i+1) + ". file</b><br />";
                        var file = fileInput.files[i];
                        if ('name' in file) {
                            message += "name: " + file.name + "<br />";
                        }
                        else {
                            message += "name: " + file.fileName + "<br />";
                        }
                        if ('size' in file) {
                            message += "size: " + file.size + " bytes <br />";
                        }
                        else {
                            message += "size: " + file.fileSize + " bytes <br />";
                        }
                        if ('mediaType' in file) {
                            message += "type: " + file.mediaType + "<br />";
                        }
                    }
                }
            } 
            else {
                if (fileInput.value == "") {
                    message += "Please browse for one or more files.";
                    message += "<br />Use the Control or Shift key for multiple selection.";
                }
                else {
                    message += "Your browser doesn't support the files property!";
                    message += "<br />The path of the selected file: " + fileInput.value;
                }
            }

            var info = document.getElementById ("info");
            info.innerHTML = message;
        }
    </script>
</head>
<body onload="GetFileInfo ()">
    <input type="file" id="fileInput" multiple="multiple" size="60" onchange="GetFileInfo ()" />
    <div id="info" style="margin-top:30px"></div>
</body>
Did you find this example helpful? yes no

Related pages:

External links:

User Contributed Comments

Post Content

Post Content