Skip to main content
Known Participant
June 4, 2009
Answered

Dowload blobs from Database

  • June 4, 2009
  • 1 reply
  • 499 views

I know this is not the best way to store files but I have inherited an old php script which I am converting to CF because php is useless.

Now i have a script to do this in php but can this be achived with CF? It is just a quick fix until I have time to rework the CMS

<?php
if(isset($_GET['id']))
{
// if id is set then get the file with the id from database


$id    = $_GET['id'];
$query = "SELECT name, type, size, content " .
         "FROM upload WHERE id = '$id'";

$result = mysql_query($query) or die('Error, query failed');
list($name, $type, $size, $content) =                                  mysql_fetch_array($result);

header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $content;

i
exit;
}

?>

    This topic has been closed for replies.
    Correct answer ilssac

    My php experience is NILL, but applying basic coding experience I believe your CFML will be close to this.

    <cfif structKeyExists(url,"id")>

      <cfquery datasource="..." name="result">

        SELECT name,type,size,content

        FROM upload

        WHERE id = <cfqueryparam value="#url.id#" cfsqltype="cf_sql_integer">

      </cfquery>

      <cfheader name="Content-Disposition: atachment; filename=#result.name#">

      <cfcontent type="#result.type#" reset="yes">

      #result.content#

    </cfif>

    If any of this content can be binary, then you may also need to use one or more of the toBinary() toBase64(), isBinary(), binaryDecode() or other relevant functions.

    1 reply

    ilssac
    ilssacCorrect answer
    Inspiring
    June 4, 2009

    My php experience is NILL, but applying basic coding experience I believe your CFML will be close to this.

    <cfif structKeyExists(url,"id")>

      <cfquery datasource="..." name="result">

        SELECT name,type,size,content

        FROM upload

        WHERE id = <cfqueryparam value="#url.id#" cfsqltype="cf_sql_integer">

      </cfquery>

      <cfheader name="Content-Disposition: atachment; filename=#result.name#">

      <cfcontent type="#result.type#" reset="yes">

      #result.content#

    </cfif>

    If any of this content can be binary, then you may also need to use one or more of the toBinary() toBase64(), isBinary(), binaryDecode() or other relevant functions.

    HulfyAuthor
    Known Participant
    June 5, 2009

    Thanks Ian that kind of works (in Firefox anyway).