How can i sending uploaded files using HTML form through Javascript to API? Below was the sample code. I'm using web-to-lead method by EspoCRM.
<div id="web-to-lead-form-container">
<form id="web-to-lead-form">
<div>
<input type="text" name="firstName" placeholder="First Name">
</div>
<div>
<input type="text" name="lastName" placeholder="Last Name" required>
</div>
<div>
<input type="email" name="emailAddress" placeholder="Email Address" required>
</div>
<div>
<input type="file" name="firstDocument">
</div>
<div>
<input type="file" name="secondDocument">
</div>
<div>
<button type="submit" name="submit">Submit</button>
</div>
</form>
</div>
<script type="text/javascript">
let webToLeadFormElement = document.getElementById('web-to-lead-form');
let webToLeadFormIsSubmitted = false;
webToLeadFormElement.addEventListener('submit', event => {
event.preventDefault();
if (webToLeadFormIsSubmitted) {
return;
}
webToLeadFormIsSubmitted = true;
webToLeadFormElement.submit.setAttribute('disabled', 'disabled');
let payloadData = {
firstName: webToLeadFormElement.firstName.value || null,
lastName: webToLeadFormElement.lastName.value || null,
emailAddress: webToLeadFormElement.emailAddress.value || null,
};
// A needed URL can be found on the Lead Capture detail view.
let url = 'https://URL_OF_YOUR_CRM/api/v1/LeadCapture/API_KEY';
let xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Accept', 'application/json');
xhr.onreadystatechange = () => {
if (this.readyState == XMLHttpRequest.DONE && this.status == 200) {
let containerElement = document.getElementById('web-to-lead-form-container');
containerElement.innerHTML = 'Sent';
}
};
xhr.onerror = () => {
webToLeadFormElement.submit.removeAttribute('disabled');
webToLeadFormIsSubmitted = false;
};
xhr.send(JSON.stringify(payloadData));
});
</script>
I try to put firstDocument: webToLeadFormElement.firstDocument.value || null, on letpayloadData but nothing happen. I know its wrong because im still new on javascript.