Restrict attachments size on single catalog item

MonicaW
Tera Guru

I have a catalog item where we want to restrict the size of all attachments to 12 MB total.  I tried using the attachment variable, but it only allows the selection of ONE attachment.  I want the ability to add multiple attachments using the built-in "add attachments" on the catalog item itself and have it calculate the size of all of them and restrict it to 12 MB.

 

I found the following code that I put in an onSubmit script, but it's not working - perhaps I need to change more elements than the var maxAttachmentSizeMB = 12; line?

>>>>>>>>>>>>>>>>>>>>>>>>>

function onSubmit() {
var attachments = this.angular.element("#sc_cat_item").scope().attachments; // Adjust element ID as needed
var submitForm = false;
var maxAttachmentSizeMB = 12; // Set your desired limit in MB

attachments.forEach(function(attachment){
var sizeBytes = parseInt(attachment.size_bytes);
var sizeMB = sizeBytes / (1024 * 1024); // Convert bytes to MB.
var sizeString = String(attachment.size_bytes); // Get the size as a string to include the units
alert(sizeString);

if(sizeMB > maxAttachmentSizeMB){
alert(attachment.file_name + ' is too large. Maximum allowed size is ' + maxAttachmentSizeMB + ' MB.');
submitForm = false;
}
});
return submitForm;
}

20 REPLIES 20

MonicaW
Tera Guru

Hi Ankur,

When you say "you can grab the complete text from here" where do you mean?  

Thanks,

Monica

@MonicaW 

Sorry forgot to add screenshots

1) search anchor tag with this class "get-attachment ng-binding ng-scope"

2) iterate and extract the file name which includes the size

3) do string manipulation and grab the size in either KB, Bytes or MB

4) then add and validate

Example: I added 3 files so it will have 3 anchor tag with that class, you can extract the text within that anchor tag and do the next steps

AnkurBawiskar_0-1757509618300.png

 

AnkurBawiskar_1-1757509767629.png

 

AnkurBawiskar_2-1757509820439.png

 

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

@MonicaW 

I doubt the script include based approach will work as the attachment could not be grabbed for the cart.

Please use the approach I shared.

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

@MonicaW 

I believe I shared a working solution.

Did you get a chance to check that?

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  10x ServiceNow MVP  ||  ServiceNow Community Leader

I believe you asked for the console message that is occurring.  I'm attaching it for the third time.  This is where we last left off.