<html> <head> <title>Beacon Sample: Attach Note With File</title> <script> var maxFileSize = 5000000; // Maximum file size, in bytes. var beaconUrl = "https://data.peak15systems.com/beacon/service.svc/insert/entity/annotation"; // This reads the file from the "file" input. If there is a file read, form fields are filled out. function readFile(event) { var fileElement = document.getElementById("file"); if (fileElement.files && fileElement.files.length > 0) { var f = fileElement.files[0]; // Validate File Size if (f.size > maxFileSize) { alert('Error: File size (' + f.size + ') exceeds max file size (' + maxFileSize + ').'); } else { // Load File Information var FR = new FileReader(); FR.onload = function (e) { document.getElementById("mimetype").value = f.type; // Get mime type of selected file document.getElementById("FileName").value = f.name; // Get name of selected file document.getElementById("documentbody").innerHTML = e.target.result.split(',')[1]; // Get only the base 64 encoded file string document.getElementById("isencoded").value = "true"; // We are submitting an encoded string checkFileLoaded(); }; FR.readAsDataURL(fileElement.files[0]); } } } function updateStatus(statusText) { var statusDiv = document.getElementById("statusDiv"); if (statusDiv != null && statusText != null) { statusDiv.innerHTML = statusText; } } // This makes one huge string to call from ajax. function submitNote() { updateStatus('Submitted.'); // Create the ajax params var beaconServer = ""; beaconServer += "token=" + document.getElementById("token").value; beaconServer += "&isencoded=" + document.getElementById("isencoded").value; beaconServer += "&objectid=" + document.getElementById("objectid").value; beaconServer += "&subject=" + document.getElementById("subject").value; beaconServer += "¬etext=" + document.getElementById("notetext").value; beaconServer += "&objecttypecode=" + document.getElementById("objecttypecode").value; beaconServer += "&mimetype=" + document.getElementById("mimetype").value; beaconServer += "&FileName=" + document.getElementById("FileName").value; beaconServer += "&documentbody=" + encodeURIComponent(document.getElementById("documentbody").innerHTML); // NOTE: we encode the base64 string because '+' get stripped out, which will make crm blow up. // Now do the call var http = new XMLHttpRequest(); http.open("POST", beaconUrl, true); //Send the proper header information along with the request http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http.setRequestHeader("Content-length", beaconServer.length); http.setRequestHeader("Connection", "close"); http.onreadystatechange = function () {//Call a function when the state changes. var status = 'Received ' + http.responseText + ' response: ' + http.readyState + ' ' + http.status; updateStatus(status); } http.send(beaconServer); updateStatus('Request Sent.'); } // File not loaded function checkFileLoaded() { var documentBody = document.getElementById("documentbody").innerHTML; var loaded = (documentBody != null && documentBody.length > 0) ? "(File Loaded)" : "(File Not Loaded)"; document.getElementById("filestatus").innerHTML = loaded; document.getElementById("submitButton").disabled = (documentBody != null && documentBody.length <= 0); } // Window Onload Events function startFunction() { var fileElement = document.getElementById("file"); var submitButtonElement = document.getElementById("submitButton"); if (fileElement.addEventListener) { fileElement.addEventListener("change", readFile, false); } else if (fileElement.attachEvent) { fileElement.attachEvent("onchange", readFile); } if (submitButtonElement.addEventListener) { submitButtonElement.addEventListener("click", submitNote, false); } else if (submitButtonElement.attachEvent) { submitButtonElement.attachEvent("onclick", submitNote); } checkFileLoaded(); } window.onload = startFunction; </script> </head> <body> <div>This page creates an annotation via AJAX.</div> <div>Status:</div> <div id="statusDiv">-</div> <br /> File <input type="file" name="file" id="file" /> <br/> Encoded File <div id="filestatus"></div> <br/> Is Encoded <input type="text" name="isencoded" id="isencoded" value="false" /> <br/> Token <input type="text" name="token" id="token" /> <br /> Object Id <input type="text" name="objectid" id="objectid" maxlength="50" /> <br /> Subject <input type="text" name="subject" id="subject" maxlength="50" /> <br /> Note Text <input type="text" name="notetext" id="notetext" maxlength="50"/> <br /> Object Type Code <input type="text" name="objecttypecode" id ="objecttypecode" maxlength="50" value="contact"/> <br /> Mime Type <input type="text" name="mimetype" id="mimetype" maxlength="50"/> <br /> File Name <input type="text" name="FileName" id="FileName" maxlength="50"/> <br /> <input type="button" id="submitButton" name="submitButton" value="Submit" /> <div id="documentbody" style="visibility:hidden;display:none"></div> </body> </html>
Beacon Sample: Attach Note with File (AJAX) Print
Modified on: Mon, 8 Jan, 2024 at 2:05 PM
Did you find it helpful? Yes No
Send feedbackSorry we couldn't be helpful. Help us improve this article with your feedback.