Search code examples
azureazure-storageazure-blob-storageabcpdfazure-web-app-service

Azure Web SItes - how to write to a file


I am using abcPDF to dynamically create PDFs.

I want to save these PDFs for clients to retrieve any time they want. The easiest way (and the way I do now on my current server) is to simply save the finished PDF to the file system.

Seems I am stuck with using blobs. Luckily abcPDF can save to a stream as well as a file. Now, how to I wire up a stream to a blob? I have found code that shows the blob taking a stream like:

blob.UploadFromStream(theStream, options);

The abcPDF function looks like this:

theDoc.Save(theStream)

I do not know how to bridge this gap.

Thanks! Brad


Solution

  • Given the situation and not knowing the full list of overloads of Save() method of abcPdf, it seems that you need a MemoryStream. Something like:

    using(MemoryStream ms = new MemoryStream())
    {
        theDoc.Save(ms);
        ms.Seek(0, SeekOrigin.Begin);
        blob.UploadFromStream(ms, options);
    }
    

    This shall do the job. But if you are dealing with big files, and you are expecting a lot of traffic (lots of simultaneous PDF creations), you might just go for a temp file. Write the PDF to a temp file, then immediatelly upload the temp file for the blob.