I am creating a modal that can be used in multiple places in my application to upload files, as a result I am not using a <form>
because this may be used within an existing form that I don't want to submit.
Please Note: this <input type=file>
is not in an html <form>
. I tried to post this question, but someone marked it as a duplicate and deleted it, and the 'duplicate' answers were all examples where it used a form. please do not mark this question as a duplicate if the examples use a form.
html
<input type="file" id="CustomerInvoices-${ogoneRef}" name="uploadFileNameForCustomerInvoices">
JavaScript
$('#CustomerInvoices-'+ogoneRef).change(function (e) {
clickSubmitUploadFiles(e, ogoneRef);
});
I have the following JavaScript function.
function clickSubmitUploadFiles(event, ogoneRef) {
let files = event.target.files;
;[...files].forEach(function (file) {
let urlString = 'http://localhost:8085/papertrail/upload-document/'+userName+'/'+ogoneRef;
$.ajax({
type: "POST",
url: urlString,
headers: {
"Authorization": "Basic " + btoa(username+":"+password)
},
data: file,
error : function (result) {
console.log('error', result);
},
success : function (result) {
console.log('success', result)
}
});
});
}
Error
Uncaught TypeError: Illegal invocation at o (jquery-1.10.2.min.js:6:7939) at gn (jquery-1.10.2.min.js:6:8398) at x.param (jquery-1.10.2.min.js:6:8180) at Function.ajax (jquery-1.10.2.min.js:6:12615) at powWowDashboard.do:18456:15 jquery-1.10.2.min.js:6 Uncaught (in promise) TypeError: Failed to execute 'arrayBuffer' on 'Blob': Illegal invocation at o (jquery-1.10.2.min.js:6:7939) at gn (jquery-1.10.2.min.js:6:8398) at x.param (jquery-1.10.2.min.js:6:8180) at Function.ajax (jquery-1.10.2.min.js:6:12615) at powWowDashboard.do:18456:15
Problem
So I think the problem is with the data
I am trying to upload is not in the correct format.
I get the data as follows:
let files = event.target.files;
and then set it in the ajax request:
data: file,
Question
How should I set the data
for the uploaded file in the request?