Table of Contents

About

The input file 1) is an input of type file that permits to select files or directory and send them to the browser file system api

Example

HTML: One file

<input type="file"  />

HTML: Multiple Files

  • The HTML
<input type="file" multiple />
  • Result

How to set the default file value?

  • from the operating system:
    • This is not possible to set the default file.
    • It would then be a security issue because you could steal files from user's computers.
  • generated: you can create and set a file object with a generated content

HTML: All files under a directory

When using the webkitdirectory attribute (supported on all browsers 2)), you can upload all files present under a directory and its children.

Example:

  • The HTML
<input type="file" webkitdirectory  />

Note that after choosing your directory, you will get the following warning dialog

Html Input File Multiple Warning Dialog

  • The result:

HTML: Disabled

<input type="file" disabled  />

HTML: How to select only a certain type of file

The accept attribute specifies the file types accepted (mime and/or file extension)

Example for image and text file

<input type="file" accept="image/*,.txt"/>

HTML: How to change the description of the button

Changing the description of the input file cannot be done via a standard attribute.

It's also not possible to disable the native default browser rendering of a input file (the appearance css property is not working).

The trick is to create a hidden input file with a visible label that refers to it via the for attributes.

  • The html
<label for="my-input-file-id" class="btn btn-primary">Select an Image</label>
<input id="my-input-file-id" style="visibility:hidden;" type="file">
  • Result:

Javascript: How to manipulate the chosen file

To see examples of how Javascript can take and handle the file chosen, see the dedicated fileApi page

Javascript: How to create and send with FormData

When a file is send with multipart form data, the file is added in the formdata as a File object

Example:

<form onsubmit="handleSubmit(this); return false;">
<input type="file" name="myfile"/>
<br>
<input name="button" type="submit" value="Choose a file and see the data type" />
</form>

The FormData constructor takes a form element as parameter. See FormData constructor Specification

handleSubmit = (form) => {
  // build the formData object
  let formData =  new FormData(form);
  // retrieve the entries in a entries variable of iterator type
  let entries = formData.entries();
  // loop over the iterator
  let result = entries.next();
  while (!result.done) {
    console.log("Input: Name: "+result.value[0]+", value: "+result.value[1].constructor.name);
    result = entries.next();
  }
}
  • Result:

Documentation / Reference