How to download the attachment from multiple Incidents

Saridha_L1
Tera Expert

Hi Team,

nayan_awadhiya

Could you please suggest me how can I download the attachment from multiple Incidents as a zip file. I have written the code, its not downloading all incident attachments. Only few attachments are downloading.   I have created afield "attachments", then I have used that field name in this code.

Code:

Processors:

(function process(g_request, g_response, g_processor) {

var sysidList = g_request.getParameter('sysparm_sys_id');

var table = g_request.getParameter('sysparm_table');

var sysIDarray;

var theRecord = new GlideRecord(table);

theRecord.addQuery('u_attachments', 'true');

theRecord.query();

while(theRecord.next()){

  if(sysIDarray==''){

  sysIDarray=theRecord.sys_id;

  }

  else

  {sysIDarray = sysIDarray +','+ theRecord.sys_id;}

  //sysIDarray = sysIDarray +','+ theRecord.sys_id;

}

var querystring = "table_sys_idIN"+sysIDarray;

var zipName = 'attachments.zip';

var StringUtil = GlideStringUtil;

var gr = new GlideRecord('sys_attachment');

gr.addEncodedQuery(querystring);

gr.query();

if (gr.hasNext()){

      g_response.setHeader('Pragma', 'public');

      g_response.addHeader('Cache-Control', 'no-cache');

      g_response.setContentType('application/octet-stream');

      g_response.addHeader('Content-Disposition', 'attachment;filename=' + zipName);

      var out = new Packages.java.util.zip.ZipOutputStream(g_response.getOutputStream());

      var count=0;

      while (gr.next()){

              var sa = new GlideSysAttachment();

              var binData = sa.getBytes(gr);

             

              var file = gr.file_name;

              addBytesToZip(out, zipName, file, binData);

              count ++;

      }

      // Complete the ZIP file

      out.close();

}

function addBytesToZip (out, dir, file, stream){

      // Add ZIP entry to output stream.

      out.putNextEntry(new Packages.java.util.zip.ZipEntry(file));

      out.write(stream, 0, stream.length);

      out.closeEntry();

}

})(g_request, g_response, g_processor);

Please help me in this issue as well.

Regards,

Saridha.L

1 ACCEPTED SOLUTION

I have found this blog post's code to work up to Helsinki: https://www.servicenowguru.com/scripting/download-attachments-zip-file/



There are many uses for it. I use it to demonstrate Edge encryption, as this code bypasses the encryption proxy and will download the encrypted files.



JarodM


View solution in original post

22 REPLIES 22

Saridha,



Also you have set the value of that field to true in all the incidents for which you want to download attachments, correct?
I have tested this and was working fine. Probably you need to go over the script and see if you missed some steps.


Hi Harneet,



Yes I have set the value of that field to true in all the incidents for which I want to download attachments ,still its not working. Its downloading only one Incident attachment. Could you please help me.



Regards,


Saridha.L.


Hi Harneet,

I tried the script you provided but while extracting zip file it is giving me below error.

find_real_file.png

Kindly help me to solve this issue.

not worked for me

 

Thanks it worked now