- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-05-2022 01:16 AM
Hi all, I'm trying to insert an image into sys_attachment table through scripted REST API.
The attachment is getting attached. But I could not see the content of the image. Then I came to know I have to encode it with base64 and i did it and inserted it, when I download the same image, I counld not see it. Here is my code below.
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
// implement resource here
(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var requestBody = request.body;
var requestData = requestBody.data;
var reqFor = requestData.requested_for;
var cat = requestData.category;
var subcat = requestData.subcategory;
var summ = requestData.summary;
var info = requestData.information;
var catalogitem = requestData.catalog_item;
var fileName = requestData.fileName;
var fileContentType = requestData.contentType;
var fileData =requestData.content;
var reqBy = '';
var cat_item = '';
gs.info('UVO Requested For' + reqFor);
var gr = new GlideRecord("sys_user");
gr.addQuery("name", reqFor.toString());
gr.query();
if (gr.next()) {
reqBy = gr.sys_id;
}
var catalog = new GlideRecord("sc_cat_item");
catalog.addQuery("name", catalogitem.toString());
catalog.query();
if (catalog.next()) {
cat_item = catalog.sys_id;
}
var requested_for = reqBy.toString();
var catalog_item = cat_item.toString();
var cart = new sn_sc.CartJS();
var item = {
'sysparm_id': catalog_item,
'sysparm_quantity': '1',
'variables': {
'requested_by':requested_for,
'category': cat.toString(),
'subcategory_02':subcat.toString(),
'request_summary': summ.toString(),
'detailed_information': info.toString(),
}
};
cart.addToCart(item);
var request1 = {
'special_instructions': '',
'requested_for': requested_for,
'delivery_address': '',
};
// Place order from cart
var requestDetails = cart.submitOrder(request1);
// update details in the Requested Item
// pull out the Request Sys ID from the order
var reqSysID = requestDetails.request_id;
var reqNumber;
var grnumber = new GlideRecord("sc_req_item");
grnumber.addQuery("request", reqSysID);
grnumber.query();
if (grnumber.next()) {
reqNumber = grnumber.number;
}
var rec = new GlideRecord('sc_req_item');
rec.addQuery('number',reqNumber);
rec.query();
if(rec.next()){
var sa = new GlideSysAttachment();
sa.write(rec, fileName, fileContentType, fileData);
//sa.write(rec, fileName, fileContentType, StringUtil.base64DecodeAsBytes(fileData));
//var agr = sa.writeBase64(rec, fileName, fileContentType, fileData);
var responseBody = {};
responseBody.number = reqNumber;
responseBody.status = "Success";
response.setBody(responseBody);
}
else{
var responseBodyFailure = {};
responseBodyFailure.status = "Failure";
response.setBody(responseBodyFailure);
}
var bodyArray = [];
var body = {};
body.number = reqNumber.toString();
//body.status = MMM;
//body.status = reqBy;
body.status = StringUtil.base64DecodeAsBytes(fileData);
bodyArray.push(body);
response.setBody(bodyArray);
}
)(request, response);
})(request, response);
Here is my request :
{"requested_for":"S K","category":"Leave","subcategory":"Unable to apply leave","summary":"test","information":"test","catalog_item":"Leave","fileName":"testing.png","contentType":"image/png","content":"encoded image content"}
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-05-2022 01:33 AM
Hi,
it should work fine. Are you sure you gave correct bas64encoded data of that image file
I shared solution for something similar 2 years ago
Scripted Rest API to update incident with attachment
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-05-2022 01:33 AM
Hi,
it should work fine. Are you sure you gave correct bas64encoded data of that image file
I shared solution for something similar 2 years ago
Scripted Rest API to update incident with attachment
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-05-2022 02:53 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-05-2022 04:05 AM
it is working. Thank you Ankur for your help.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-08-2024 04:24 AM
@SK36 Could you please share the solution as I am facing the same issue.