Потоковый бинарный файл из MySQL для загрузки с PHP - PullRequest
5 голосов
/ 14 октября 2009

У меня есть таблицы Excel, хранящиеся в поле longblob таблицы MySQL. Мне нужно извлечь эти данные и затем передать их пользователю в виде загружаемого файла, желательно без предварительной записи на диск.

возможно?

Редактировать - Эх, просто разобрался ... Опубликовано в ответ ниже.

Ответы [ 2 ]

12 голосов
/ 14 октября 2009
function getfile($blockid)
{
    global $msa_db;
    $sql = "select filename, filedata from blocks where blockid = '$blockid'";
    $query = mysql_query($sql, $msa_db);
    $result['filename'] = mysql_result($query,0,0);
    $result['filedata'] = mysql_result($query,0,1);
    return $result;

}

function download($fileinfo)
{
    $file = base64_decode($fileinfo['filedata']);
    header("Cache-Control: no-cache private");
    header("Content-Description: File Transfer");
    header('Content-disposition: attachment; filename='.$fileinfo['filename']);
    header("Content-Type: application/vnd.ms-excel");
    header("Content-Transfer-Encoding: binary");
    header('Content-Length: '. strlen($file));
    echo $file;
    exit;
}

$fileinfo = getfile($blockid);

download($fileinfo);
1 голос
/ 22 марта 2016

Только что получил решение

http://www.codeproject.com/Articles/831185/CREATE-DOWNLOAD-ZIP-FILE-USING-PHP

    $data = base64_decode($data);

    header("Cache-Control: no-cache private");
    header("Content-Description: File Transfer");
    header("Content-disposition: attachment; filename='".$identifier.".zip'");      
    header("Content-Type: application/octet-stream");
    header("Content-Transfer-Encoding: binary");
    header('Content-Length: '. strlen($data));      
    header("Pragma: no-cache");
    header("Expires: 0");

    ob_clean();
    flush();

    echo $data;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...