upload image to netsuite file cabinet from website using suitescript 2.0. the image is stored in folder where the folder id specified in suitescript 2.0
View File
events: {
'click #form-submit-button' : 'submitPatentButton',
}
submitPatentButton : function(e) {
try{
var objects = {
Signature: $('#Signature').val().split(',')[1],
customerName: $('#customerName').val(),
imageType: $('#Signature').val().split(',')[0].split('/')[1].split(';')[0]
}
console.log(objects, objects.Signature.length);
var url = Utils.getAbsoluteUrl(
getExtensionAssetsPath(
"Modules/Myaccount/SuiteScript2/Myaccount.Service.ss"
),
true
);
console.log(url);
$('#loadMessage').show();
jQuery.post(url, objects).done(function (e) {
$('#loadMessage').hide();
$('#successMessage').show();
setTimeout(() => {
window.location.reload();
}, 1000);
})
.fail(function (e) {
$('#loadMessage').hide();
$('#errorMessage').show();
setTimeout(() => {
window.location.reload();
}, 1000);
})
}
catch(e) {
console.log('err@barcode2View',e)
}
}
Template File
<section class="myaccount-info-card">
<label for="customer-signature" class="customer-signature-label">Signature <span class="required">*</span></label>
<input {{#if hasAutoFocus}} autofocus {{/if}} type="file" name="files" id="result" class="customer-signature-input" accept="image/*" required>
<form class="signature-form" id="signature-form" onsubmit="" action="POST" >
<div class='contactus-container'>
<div class="contact-info-section">
<div class="signature-form-group" data-input="Signature" data-validation="control-group">
<div class="group-form-control" data-validation="control">
<input type="text" class="form-group-input" name="Signature" id="Signature" hidden>
</div>
</div>
<div class="signature-form-group" data-input="customer-name" data-validation="control-group">
<div class="group-form-control" data-validation="control">
<input type="text" class="form-group-input" name="customerName" id="customerName" value={{customerName}} hidden>
</div>
</div>
<div type="text" id="text-area">
<canvas id="canvas01" width="1000px" height="1000px" hidden></canvas>
</div>
<button class="submit-button" id="form-submit-button" type="submit" form="signature-form">Submit</button>
</div>
<div id="loadMessage" class="alert alert-load" style="display:none;" >Signature is uploading, it may take some time. Please wait...</div>
<div id="successMessage" class="alert alert-success" style="display:none;" > Signature Uploaded successfully...</div>
<div id="errorMessage" class="alert alert-danger" style="display:none;" > Sorry for for the inconvineance, signature is not Uploaded</div>
</form>
</section>
<script>
$('#result').change(function handleFiles(e) {
var ctx1 = $('#canvas01');
var ctx = $(ctx1)[0].getContext('2d');
var img = new Image();
img.onload = function() {
ctx.drawImage(img, 0, 0);
var base64 = document.querySelector('#canvas01').toDataURL();
$('#Signature').val(base64);
}
img.src = URL.createObjectURL(e.target.files[0]);
})
</script>
Suitescript 2.0
/**
* @NApiVersion 2.x
* @NModuleScope Public
*/
define(['N/file'],function (file) {
"use strict";
function uploadSign(data) {
log.error('data', data);
if (data.request.method === 'POST') {
var signatureData = data.request.parameters.Signature;
var customerName = data.request.parameters.customerName;
var imageType = data.request.parameters.imageType;
log.error('signatureData', signatureData);
log.error('customerName', customerName);
log.error('inside Post, imageType', imageType)
if (imageType == 'png') {
var imageName = customerName + '.png'
var fileObj = file.create({
name: imageName,
fileType: file.Type.PNGIMAGE,
contents: signatureData,
description: 'This is customers Signature',
encoding: file.Encoding.BASE_64,
folder: 18826,
isOnline: true
});
var id = fileObj.save();
} else {
var imageName = customerName + '.jpg'
var fileObj = file.create({
name: imageName,
fileType: file.Type.JPGIMAGE,
contents: signatureData,
description: 'This is customers Signature',
encoding: file.Encoding.BASE_64,
folder: 18826,
isOnline: true
});
var id = fileObj.save();
}
}
return data.response.write(JSON.stringify({success: 'success'}));
}
return {
service: uploadSign
};
});
File Cabinet:
