[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Base64 Decoding/Raw vs. Post



   Thanks Scott! Just what I needed! I take it the PDF file is in an
   attribute and not an element, right?

   On Wed, Apr 22, 2015 at 12:40 PM, Scott Mildenberger
   <[1]SMildenberger@xxxxxxxxxxxxxxxxxx> wrote:

     I use http_url_post_xml() to receive a pdf file that is Base64
     encoded.� Below is my incoming() procedure.� In the tag PDFData is
     the Base64 encoded data and I decode and write it out to an IFS file
     when I receive the tag HOSLog3.� Let me know if you have questions
     on anything I am doing here.
     � � �P Incoming� � � � B
     � � �D Incoming� � � � PI
     � � �D� �LoadId� � � � � � � � � � � 10i 0
     � � �D� �depth� � � � � � � � � � � �10I 0 value
     � � �D� �name� � � � � � � � � � � 1024A� �varying
     const
     � � �D� �path� � � � � � � � � � �24576A� �varying
     const
     � � �D� �value� � � � � � � � � � 65535A� �varying
     const
     � � �D� �attrs� � � � � � � � � � � � �*�     �dim(32767)
     � � �D� � � � � � � � � � � � � � � � � �     �const options(*varsize)
     � � �d Program� � � � �c� � � � � � � � �     �'UTILS/XUSERMSG'
     � � �D attrname� � � � s� � � � � �1024A� �varying
     � � �D attrval� � � � �s� � � � � 65535A� �varying
     � � �d BigMsg� � � � � s� � � � � � 512
     � � �D count� � � � � �s� � � � � � �10I 0
     � � �d Filename� � � � s� � � � � � 100� � varying
     � � �d Msg� � � � � � �s� � � � � � �50
     � � �d retlen� � � � � s� � � � � � �10i 0
     � � �d TimeString� � � s� � � � � � �26
     � � �d User� � � � � � s� � � � � � �10
     � � �D atoi� � � � � � PR� � � � � � 10i 0
     extproc('atoi')
     � � �D� �string� � � � � � � � � � � � *� �value
     options(*string)
     � � � /free
     � � � � �//Msg = 'In:' + name;
     � � � � �//dsply Msg 'SCOTT';
     � � � � �//Msg = 'Value:' + value;
     � � � � �//dsply Msg 'SCOTT';
     � � � � �select;
     � � � � � �when name = 'HOSLog3';
     � � � � � � �count = 1;
     � � � � � � �dow http_nextXmlAttr(attrs: count: attrname:
     attrval);
     � � � � � � � �select;
     � � � � � � � � �when (attrname = 'id');
     � � � � � � � � � �//Msg = 'ID=' + attrval;
     � � � � � � � � � �//dsply Msg 'SCOTT';
     � � � � � � � � � �LastIndex = %int(%trim(attrval));
     � � � � � � � � �when (attrname = 'date');
     � � � � � � � � � �LogDate = %date(%trim(attrval) : *ISO);
     � � � � � � � �endsl;
     � � � � � � �enddo;
     � � � � � � �//� Base64 decode the pdf
     � � � � � � �retlen = apr_base64_decode(PDFData : TmpValue);
     � � � � � � �//� Create directory for this truck if it
     doesn't exist.
     � � � � � � �Filename = '/home/Driver Logs/' + Truck;
     � � � � � � �if syscall('crtdir dir(''' + Filename + ''')' :
     'CPFA0A0') <> '';
     � � � � � � � �//� Send error message
     � � � � � � � �dsply ('Error creating log directory for ' +
     Truck) 'SCOTT';
     � � � � � � � �return;
     � � � � � � �endif;
     � � � � � � �//� Store PDFData to an ifs file.
     � � � � � � �Filename += '/Log' + %char(LogDate : *ISO0) +
     '.pdf';
     � � � � � � �unlink(Filename);
     � � � � � � �fd = open(Filename :
     � � � � � � � � � � � �O_WRONLY+O_CREAT+O_CODEPAGE:
     � � � � � � � � � � � �S_IRUSR + S_IWUSR + S_IXUSR
     � � � � � � � � � � � �+ S_IRGRP + S_IXGRP
     � � � � � � � � � � � �+ S_IROTH + S_IXOTH : 819);
     � � � � � � �if fd < 0;
     � � � � � � � �EscErrno(errno);
     � � � � � � � �dsply ('RANDRTVLOG Write PDF Error: ' +
     %char(errno)) 'SCOTT';
     � � � � � � �endif;
     � � � � � � �if write(fd: %addr(PDFData): retlen) < retlen;
     � � � � � � � �err = errno;
     � � � � � � � �callp close(fd);
     � � � � � � � �EscErrno(err);
     � � � � � � �endif;
     � � � � � � �callp close(fd);
     � � � � � �when name = 'Vehicle';
     � � � � � � �Truck = %trim(value);
     � � � � � �when name = 'PDFData';
     � � � � � � �PDFData = value;
     � � � � � � �TmpValue = %subst(PDFData : 1 : %len(value));
     � � � � � �when name = 'TotalRecordCount';
     � � � � � � �QueueDepth = %int(%trim(value));
     � � � � �endsl;
     � � � /end-free
     � � �P� � � � � � � � �E
     Scott

   -----Original Message-----
   From: [2]ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
   [mailto:[3]ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Michael
   Ryan
   Sent: Wednesday, April 22, 2015 10:08 AM
   To: HTTPAPI and FTPAPI Projects
   Subject: Base64 Decoding/Raw vs. Post
   Ok...I need to receive a Base64 document in an XML tag. I'm currently
   using http_url_post_raw and converting to EBCDIC, but that's not going
   to work, is it? Dumb question: if I use http_url_post_xml to get the
   Base64 data, that will still be in binary, right? And then I can decode
   it and write it to a file, right?
   Anyone have an example? Thanks!

     --------------------------------------------------------------------
     ---
     This is the FTPAPI mailing list.� To unsubscribe, please go to:
     [4]http://www.scottklement.com/mailman/listinfo/ftpapi
     --------------------------------------------------------------------
     ---

References

   1. mailto:SMildenberger@xxxxxxxxxxxxxxxxxx
   2. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
   3. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
   4. http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------