Skip to main content
Participant
February 7, 2016
Answered

cfzip unzip to browser

  • February 7, 2016
  • 2 replies
  • 799 views

Is there a way to unzip without writing the PDF file inside the zip to disk but directly to the browser for downloading?

    This topic has been closed for replies.
    Correct answer WolfShade

    Depending upon what version of CF server you're using, it would be like this.

    Say your .zip file is located at C:\userguide.zip, and it contains one PDF file, userguide.pdf.

    <cfzip file="C:\userguide.zip" action="list" name="filez" />

    <cfzip file="C:\userguide.zip" action="readBinary" entrypath="#filez.name#" variable="thisFile" />

    <cfheader name="Content-Disposition" value="inline; filename=#filez.name#" />

    <cfheader name="Content-Type" value="application/pdf" />

    <cfcontent type="application/pdf" variable="#ToBinary(thisFile)#" reset="true" /><cfabort>

    HTH,

    ^_^

    UPDATE:  Very important that the filename of the PDF not contain any spaces, slashes, backslashes, etc.  Replace all of these with underscore, if you must.

    UPDATE2:  I should also note that the above should be the only code on the page.  Anything before the above will break the process, and anything after will be ignored.

    The CFABORT is if you are redirecting to this page from another, then this will offer the PDF to stream without actually going to the page in the browser - it will offer the file, but appear as if it's running in the background.

    2 replies

    Participant
    February 14, 2016

    Thank you, that worked perfectly!

    WolfShade
    Legend
    February 16, 2016

    Glad you got it working, and thank you for marking my answer correct.

    V/r,

    ^_^

    WolfShade
    WolfShadeCorrect answer
    Legend
    February 8, 2016

    Depending upon what version of CF server you're using, it would be like this.

    Say your .zip file is located at C:\userguide.zip, and it contains one PDF file, userguide.pdf.

    <cfzip file="C:\userguide.zip" action="list" name="filez" />

    <cfzip file="C:\userguide.zip" action="readBinary" entrypath="#filez.name#" variable="thisFile" />

    <cfheader name="Content-Disposition" value="inline; filename=#filez.name#" />

    <cfheader name="Content-Type" value="application/pdf" />

    <cfcontent type="application/pdf" variable="#ToBinary(thisFile)#" reset="true" /><cfabort>

    HTH,

    ^_^

    UPDATE:  Very important that the filename of the PDF not contain any spaces, slashes, backslashes, etc.  Replace all of these with underscore, if you must.

    UPDATE2:  I should also note that the above should be the only code on the page.  Anything before the above will break the process, and anything after will be ignored.

    The CFABORT is if you are redirecting to this page from another, then this will offer the PDF to stream without actually going to the page in the browser - it will offer the file, but appear as if it's running in the background.