When I use XMLHttpRequest, a file is correctly uploaded using FormData
. However, when I switch to jQuery.ajax
, my code breaks.
This is the working original code:
function uploadFile(blobFile, fileName) { var fd = new FormData(); fd.append("fileToUpload", blobFile); var xhr = new XMLHttpRequest(); xhr.open("POST", "upload.php", true); xhr.send(fd); }
Here is my unsuccessful jQuery.ajax
attempt:
function uploadFile(blobFile, fileName) { var fd = new FormData(); fd.append("fileToUpload", blobFile); var xm = $.ajax({ url: "upload.php", type: "POST", data: fd, }); }
What am I doing wrong? How can I get the file to be uploaded correctly, using AJAX?
You can upload the selected file by creating a FormData class and passing it to Axios' post() function. const input = document. querySelector('#my-input'); const formData = new FormData(); formData. append('myFile', input.
File upload is not possible through AJAX. You can upload file, without refreshing page by using IFrame .
Follow this rules when creating a multipart form: Specify enctype="multipart/form-data" attribute on a form tag. Add a name attribute to a single input type="file" tag. DO NOT add a name attribute to any other input, select or textarea tags.
You have to add processData:false,contentType:false
to your method, so that jQuery does not alter the headers or data (which breaks your current code).
function uploadFile(blobFile, fileName) { var fd = new FormData(); fd.append("fileToUpload", blobFile); $.ajax({ url: "upload.php", type: "POST", data: fd, processData: false, contentType: false, success: function(response) { // .. do something }, error: function(jqXHR, textStatus, errorMessage) { console.log(errorMessage); // Optional } }); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With