Following is the sample code for uploading multiple files at a single form submit to the customer record
HTML
<form id="myform">
<div>
<h2>Logo Upload
</h2>
<fieldset>
<input type="hidden" name="document" value="file" id="file_fs-code">
<!-- If we want to choose multiple files then use attribute named "multiple" -->
<input type="file" required="" class="form-control inputreq" id="file_fs" name="file" aria-required="true" onchange="myFunction('file_fs');" multiple>
</fieldset>
</div>
<div class="loader"></div>
<div>
<input name="submitter" type="button" value="Submit" onclick="buttonclick();">
</div>
</div>
</form>
<script>
var files = $('#file_fs')[0].files;
async function buttonclick(){
$("#myform").valid();
if ($("#myform").valid()) {
$(".loader").show();
$(".button-input").attr("disabled", true)
var files = $('#file_fs')[0].files;
var fileValues = $('#file_fs');
var fileDataarr = [];
for (var i = 0; i < files.length; i++) {
let fileDataa = getBase64(files[i]);
let finalData = await fileDataa;
var fileData = {
'name': files[i].name,
'file': finalData,
'type': files[i].type
};
fileDataarr.push(fileData)
}
console.log('fileDataarr',fileDataarr);
$.ajax({
type: "POST",
url: "https://tstdrv2552647.extforms.netsuite.com/app/site/hosting/scriptlet.nl?script=93&deploy=1&compid=TSTDRV2552647&h=fe7944609de5d8a3e689",
data: {
'document': JSON.stringify(fileDataarr)
},
success: function() {
$(".loader").hide();
onClickSnap();
//window.parent.location.href = "https://brandedbillscustom.com/pages/branded-bills-production-flow";
}
});
}
}
</script>
Suitelet
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
define(['N/https', 'N/search', 'N/email', 'N/render', 'N/runtime', 'N/task', 'N/url', 'N/format', 'N/log', 'N/record', 'N/file', 'N/ui/serverWidget', 'N/error', 'N/currentRecord', 'N/encode'],
function(https, search, email, render, runtime, task, url, format, log, record, file, serverWidget, error, currentRecord, encode) {
function onRequest(context) {
try {
log.debug("method", context.request.method);
if (context.request.method === 'POST') {
log.debug('in POST');
log.debug("response", (context.request.body))
log.debug("response", (context.request.parameters))
var objRecord = record.load({
type: record.Type.CUSTOMER,
id:1261,
isDynamic: true,
ignoreMandatoryFields: true
});
var fileValue =[]
fileValue = context.request.parameters.document
var fileValue2 = JSON.parse(fileValue)
for(var i=0;i<fileValue2.length; i++){
var fileContent = fileValue2[i].file
log.debug("fileContent", fileContent)
var nameOfFile = fileValue2[i].name
log.debug("nameOfFile", nameOfFile)
var fileName = (new Date()).getTime() + nameOfFile;
log.debug("fileName", fileName);
//create file in file cabinet
var typeOfFile = nameOfFile.split('.');
log.debug("nameOfFile", nameOfFile.length)
var fileTyp = typeOfFile[typeOfFile.length - 1];
log.debug("fileTyp", fileTyp)
// response.write(fileName);
if(fileContent){
var fileForData = file.create({
name: fileName,
fileType: file.Type.PDF,
contents: fileContent,
folder: -12,
isOnline: true
});
var fileID = fileForData.save();
log.debug('fileID',fileID)
if(i==0){
if (fileID) {
objRecord.setValue({
fieldId: 'custentity8',
value: fileID
});
}
}
if(i==1){
if (fileID) {
objRecord.setValue({
fieldId: 'custentity9',
value: fileID
});
}
}
if(i==2){
if (fileID) {
objRecord.setValue({
fieldId: 'custentity10',
value: fileID
});
}
}
if(i==3){
if (fileID) {
objRecord.setValue({
fieldId: 'custentity11',
value: fileID
});
}
}
if(i==4){
if (fileID) {
objRecord.setValue({
fieldId: 'custentity12',
value: fileID
});
}
}
}
}
var recordId = objRecord.save({
enableSourcing: false,
ignoreMandatoryFields: true
});
}
else {
try {
var fileHTML = file.load({
id: 2537
});
//get contents
var htmlContent1 = fileHTML.getContents();
context.response.write(htmlContent1);
} catch (e) {
log.debug("Err ", e)
}
}
} catch (error) {
log.debug('error', error);
}
}
return {
onRequest: onRequest
};
});