Let's continue our focus on images and discuss the File API. We can write code to preview the image before the user uploads it.
Ok, The File API is a set of APIs that allows web applications to work with file objects in the browser. It provides a way to handle file upload operations and access the contents of selected files. The File API consists of the following main interfaces and methods:
- File object: Represents a file that has been selected by the user or obtained from other sources like drag and drop operations or the
<input type="file">
element. - FileList object: A list of
File
objects, usually obtained from a file input element or a drag and drop event. - FileReader object: Allows you to read the contents of a
File
object asynchronously. It provides methods likereadAsText()
,readAsDataURL()
,readAsArrayBuffer()
, andreadAsBinaryString()
to access the file content in various formats. - Blob object: A raw data type that represents a binary large object (BLOB). It can be used to create File objects or handle binary data.
Here's an example of how you can work with the File API to display an image before file upload:
In this example:
- We add an
accept="image/*"
attribute to the file input element to allow only image files to be selected. - We create a
<div>
element with an idimageContainer
where we'll display the image. - Inside the
change
event listener, we first check if a file has been selected and if it's an image file. - We create a new
FileReader
instance and set up anonload
event listener. - Inside the
onload
event listener, we create a newImage
object and set itssrc
to the result of theFileReader
(which is a data URL representing the image data). - We set up another
onload
event listener for theImage
object. - Inside this second
onload
event listener, we clear the contents of theimageContainer
div and append theImage
element to it, displaying the image.
This code will display the image on the webpage without any manipulation. If you want to perform any image manipulation, you can add that logic inside the second onload
event listener before appending the Image
element to the imageContainer
.
Note that the readAsDataURL()
method is used here because it converts the image file into a data URL, which can be directly set as the src
of an Image
object. This approach works well for displaying images.