Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

Question about upload the photo to user table

JackieZhang
Tera Contributor

Hi all,

I want to write a scripted api to upload the photo to user table. Here is my code but failed. Please help to correct the code.

 

(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {

    var requestBody = request.body.dataString;
    var parser = new global.JSON();
    var parsedData = parser.decode(requestBody);
    var correlation_id = parsedData.userID;
    //var fileName = 'photo';
    var fileContentType = parsedData.contentType;
    var fileData = parsedData.fileData;
    var rec = new GlideRecord('sys_user');
    rec.addQuery('u_correlation_id', correlation_id);
    rec.query();
    if (rec.next()) {
        var attachment_request = new sn_ws.RESTMessageV2();
        attachment_request.setEndpoint(endPoint);
        attachment_request.setHttpMethod('POST');
        var user = 'xxx';
        var password = 'xxxxx';
        attachment_request.setBasicAuth(user, password);
        attachment_request.setRequestHeader("Accept", "application/json");
        attachment_request.setRequestHeader("Content-Type", fileContentType);
        attachment_request.setRequestBody(fileData);
        var attachment_response = attachment_request.execute();
        response.setBody(attachment_response.responseBody);
        response.setStatus(attachment_response.getStatusCode());
    } else {
        var error = "The User ID " + correlation_id + " not found in ServiceNow";
        var responseBodyFailure = {
            "error": error
        };
        responseBodyFailure.status = "Failure";
        response.setStatus(404);
        response.setBody(responseBodyFailure);
    }

})(request, response);
1 ACCEPTED SOLUTION

@JackieZhang 

try this link where I shared solution to attach file via scripted rest api then enhance it based on your requirement. once the image is copied to record, simply query sys_attachment with this user sysId and update the table name as 'ZZ_YYsys_user'

Scripted Rest API to update incident with attachment 

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

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

View solution in original post

10 REPLIES 10

You means this solution? but write() is only for plan text?

(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {

	var requestBody = request.body.dataString;
	var parser = new global.JSON();
	var parsedData = parser.decode(requestBody);
	var number = parsedData.incidentNumber;
	var fileName = parsedData.fileName;
	var fileContentType = parsedData.contentType;
	var fileData = parsedData.fileData;

	var rec = new GlideRecord('incident');
	rec.addQuery('number',number);
	rec.query();
	if(rec.next()){
		var sa = new GlideSysAttachment();
		sa.write(rec, fileName, fileContentType, fileData);
		var responseBody = {};
		responseBody.incNumber = number;
		responseBody.status = "Success";
		response.setBody(responseBody);
	}
	else{
		var responseBodyFailure = {};
		responseBodyFailure.status = "Failure";
		response.setBody(responseBodyFailure);
	}

})(request, response);