There are many ways to upload a blob (a group of bytes that holds the data stored in a file) in JavaScript, using XMLHttpRequest, Fetch API, jQuery. In this tutorial, we will discuss the two most common ways that are supported by a majority of the browsers.
Note: To test our HTTP request, you can use minimal express server. You can also use any online testing tool like webhook.site.
Fetch API: The Fetch API allows web browsers to send and receive data from the servers through HTTP requests. It is an easy-to-use version of XMLHttpRequest. The fetch() method returns a Promise which then can be chained with then() and catch() for better error handling. It is supported by all the modern browsers except IE.
Syntax:
fetch( url, // API endpoint { method:"", // HTTP Method (GET, POST, PUT, DELETE) body: {}, // Data to be sent }).then(response => { // handle the response }) .catch(e => { // handle the error });
Example:
JavaScript
<script> function uploadBlob() { const blob = new Blob( [ "This is some important text" ], { type: "text/plain" } ); // Creating a new blob // Hostname and port of the local server // HTTP request type method: "POST" , // Sending our blob with our request body: blob }) .then(response => alert( 'Blob Uploaded' )) . catch (err => alert(err)); } document.addEventListener( 'load' , uploadBlob()) </script> |
Output:
AJAX: It is a set of web applications that can send and retrieve data from a server asynchronously without reloading the current page. Please import or load jQuery before calling the ajax function.
Syntax:
$.ajax({ url: "", // API Endpoint type: "", // HTTP Method (GET, POST, PUT, DELETE) data: {}, // Data to be sent // Specifies how the form-data should be encoded enctype: 'multipart/form-data', success: function(data) { // Handle the response }, error: function(e) { // Handle the error } });
Example:
HTML
<!DOCTYPE html> < html lang = "en" > < head > < script src = </ script > </ head > < body > < script > function uploadBlob() { const blob = new Blob( ["This is some important text"], { type: "text/plain" } ); // Creating a new blob $.ajax({ // Hostname and port of the local server url: "http://localhost:3000/", // HTTP request type type: "POST", // Sending blob with our request data: blob, processData: false, contentType: false, success: function (data) { alert('Blob Uploaded') }, error: function (e) { alert(e); } }); } $(document).on('load', uploadBlob()); </ script > </ body > </ html > |
Output: