Выгрузка файла из компонента
Почти дописал компонент на основе modExtra, который собственно взял с данного сайта, компонент не сильно наварочаный функционалом, главное его действией это простой сбор телефонных номеров. Так вот такая загвоздка, сделал выгрузку данных в csv файл, все работает без проблем, файл сохроняется в папке assets/components/modextra (пока еще не понял почему именно здесь), но вот как его сохранить на комп, что бы заказчик не лазил по папкам сайта и не искал этот файл.
Так наполняю файл инфой:
Пробывал сделать выгрузку таким методом, но как то без успешно
Так наполняю файл инфой:
// $dataArr - массив данных из БД
$implode = implode(" ", $dataArr);
$str = iconv("UTF-8", "WINDOWS-1251", $implode);
$file = fopen("demo.csv","w");
fwrite($file," ".$str);
fclose($file);
Пробывал сделать выгрузку таким методом, но как то без успешно
header ("Content-Type: application/octet-stream");
header ("Accept-Ranges: bytes");
header ("Content-Length: ".filesize($file));
header ("Content-Disposition: attachment; filename=".$file);
readfile($file);
Подскажите пожалуйста, как правильно это сделать в компоненте, как я понимаю на данный файл «процессор» идет ajax запрос от ExtJS, может это как то влияет, или может надо как то пути прописать правильно.Комментарии: 2
Если на процессор идет AJAX запрос, то окно сохранения файла не появится. Чтобы дать возможность сохранить файл, надо оставить код из вашего второго примера (отправляющий нужные заголовки) в процессоре, а в JS «вызывать» процессор таким образом:
window.location.href = ComponentName.config.connectorUrl + '?HTTP_MODAUTH=' + MODx.siteId + '&action=processor/name';
Офигеть, работает ))))
Вот как у меня это выглядет
Большое спасибо тебе добрый человек!!!
Вот как у меня это выглядет
// Это конец файла процессора.
$implode = implode(" ", $dataArr);
$str = iconv("UTF-8", "WINDOWS-1251", $implode);
$filename = "data.csv";
$file = fopen($filename,"w");
fwrite($file," ".$str);
fclose($file);
header ("Content-Type: application/octet-stream");
header ("Accept-Ranges: bytes");
header ("Content-Length: ".filesize($file));
header ("Content-Disposition: attachment; filename=".$filename);
readfile($filename);
// А так идет запрос в ExtJs
window.location.href = this.config.url + '?HTTP_MODAUTH=' + MODx.siteId + '&action=mgr/item/save';
Большое спасибо тебе добрый человек!!!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.