У меня есть таблицы Excel, хранящиеся в поле longblob таблицы MySQL. Мне нужно получить эти данные, а затем передать их пользователю в качестве загружаемого файла, желательно, не записывая его сначала на диск.
Возможное?
Редактировать – Э, просто понял это … Опубликовано в ответе ниже.
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);
Просто получил решение
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;