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

RE: Base64 Decoding/Raw vs. Post



No it is in an element called 'PDFData' - there is a when where I save the value there.  I wait until I receive the HOSLog3 element before I decode and write the pdf file to the IFS.  The loop inside HOSLog3 for the attributes is just collecting other info I need but is not related to getting and saving the PDF file. 

Scott


-----Original Message-----
From: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Michael Ryan
Sent: Wednesday, April 22, 2015 10:48 AM
To: HTTPAPI and FTPAPI Projects
Subject: 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 < 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: ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx [mailto:
> 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:
> 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
-----------------------------------------------------------------------