Добрый день!
Много сейчас реализовано решений для AJAX загрузки файлов на сервер. Но чтобы скачать файл с сервера - информации нигде не встречал

Вообщем у меня есть рабочий вариант реализации AJAX , но файл он не скачивает а отображает его содержимое в консоле как txt.
Файл ajax.js
$(function() // объявляем глобальную функцию готовности DOM
{
$('button#getfile').live('click', function() // Выкачиваем AJAX'ом сгенерированный CSV файл
{
$.get('/?getfile', function(){}); // коннектим к AJAX обработчику
});
});
Файл обработчик getfile.php
<?php
if($core->isAjax() && isset($_REQUEST['getfile'])) // если AJAX верный
{
$core->getFILE(); // генерируем файл
$core->getCSV(); // выдаем CSV в браузер моментально
}?>
Методы вызываемые выше - core.class.php
<?php
public function getCSV() // метод для загрузки CSV
{
$filename = SITEROOT."data-".date('d-m-Y').".".FILEEXT;
$filenameroot = PATHFILE."data-".date('d-m-Y').".".FILEEXT;
header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-Transfer-Encoding: binary');
readfile($filename);
unlink($filenameroot);
}
public function getFILE() // метод генерации исходящего файла
{
$sql = "SELECT cat.category_name AS category, sub.category_name AS subcategory
FROM `".DBPREFIX."_categories` cat
RIGHT JOIN ".DBPREFIX."_subcategories sub ON sub.category_id = cat.category_id INTO OUTFILE '".PATHFILE."data-".date('d-m-Y').".".FILEEXT."'";
try
{
$this->db->query($sql);
}
catch(PDOException $e)
{
echo $e->getMessage();
return false;
}
}?>
Как видно выше, файл получаю в бинарном режиме. В браузере заголовок ответа выглядит следующим образом:
Код:
|
Connection Keep-Alive
Content-Disposition attachment; filename="http://www.vertical.local/data/data-06-07-2012.csv"
Content-Length 3392
Content-Type application/octet-stream
Date Fri, 06 Jul 2012 05:48:14 GMT
Keep-Alive timeout=5, max=100
Server Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By PHP/5.3.8
content-transfer-encoding binary |