Sunday, December 21, 2025

Attach a file with base 64 string x++ D365fo

 str base64String = "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZwovUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzCi9LaWRzIFsgMyAwIFIgXQovQ291bnQgMSA+PgplbmRvYmoKMyAwIG9iago8PCAvVHlwZSAvUGFnZQovUGFyZW50IDIgMCBSCi9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Db250ZW50cyA0IDAgUgovUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA1IDAgUiA+PiA+PiA+PgplbmRvYmoKNCAwIG9iago8PCAvTGVuZ3RoIDQ0ID4+CnN0cmVhbQpCVAovRjEgMjQgVGYKMTAwIDcwMCBUZAooSGVsbG8gV29ybGQpIFRqCkVUCmVuZHN0cmVhbQplbmRvYmoKNSAwIG9iago8PCAvVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL0Jhc2VGb250IC9IZWx2ZXRpY2EgPj4KZW5kb2JqCnhyZWYKMCA2CjAwMDAwMDAwMDAgNjU1MzUgZgowMDAwMDAwMDEwIDAwMDAwIG4KMDAwMDAwMDA3OSAwMDAwMCBuCjAwMDAwMDAxNzggMDAwMDAgbgowMDAwMDAwMzAxIDAwMDAwIG4KMDAwMDAwMDM5MCAwMDAwMCBuCnRyYWlsZXIKPDwgL1NpemUgNgovUm9vdCAxIDAgUiA+PgpzdGFydHhyZWYKNTAyCiUlRU9G";

str fileName = "MyAttachment.pdf";

str fileType = "PDF"; 

PurchTable purchTable; 

select firstOnly purchTable where purchTable.PurchId == 'PO00003075'; 

if (purchTable)

{

    System.IO.MemoryStream      memoryStream;

    DocuRef                     docuRef;

    #define.File('File')

    try

    {

        if(purchTable.RecId  && fileName)

        {

            docuRef.clear();

            docuRef.RefTableId   = purchTable.TableId;

            docuRef.RefRecId     = purchTable.RecId;

            docuRef.RefCompanyId = curExt();

            docuRef.TypeId       = #File;

            docuRef.Name         = System.IO.Path::GetFileNameWithoutExtension(fileName);

            docuRef.DocumentId   = newGuid();

            if(docuRef.validateWrite())

            {

                docuRef.insert();

                memoryStream = new System.IO.MemoryStream(System.Convert::FromBase64String(base64String));

                if(memoryStream != null)

                {

                    using(System.IO.MemoryStream fileStream = memoryStream)

                    {

                        DocuAction action = docuRef.docuAction();

                        action.attachFile(docuRef,fileName,'',fileStream);

                        info(strFmt('File is uploaded to Sales ID:%1 successfully',salesTable.SalesId));

                    }

                }

            }

        }

    }

    catch(Exception::CLRError)

    {

        System.Exception e = CLRInterop::getLastException();

        if(e != null)

        {

            e = e.InnerException;

            throw error(e.ToString());

        }

    }

}

else

{

    warning("Purchase Order not found.");

}

Call API using x++ D365FO

 System.Net.HttpWebRequest    request; System.Net.HttpWebResponse   response; System.IO.Stream             dataStream; System.IO.StreamReade...