doniyorbekm
@doniyorbekm
Yii-шник

Ajax не может заставить файл скачиваться?

Добрый день!
Проект на Yii2. Хочу сформировать csv-файл и заставить его скачаться.
Если перейти на метод через строку браузера: файл формируется и даже скачивается. Вот сам метод:
public function actionExportStaffCsv() {
        //$requestID = htmlspecialchars(trim(Yii::$app->request->get('dept')));
        $filepath = $_SERVER["DOCUMENT_ROOT"].'/web/junk/test_'.date('dmYhis').'.csv';
        $output = fopen($filepath, 'w+');
        fputcsv($output, ["#", "Description", "test", "test2"], ';');
        fputcsv($output, ["1","2","3","4"], ';');
        header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.'test.csv');
        header('Content-Length: ' . filesize($filepath));
        readfile($filepath);
    }

Но если обратиться к методу через аякс - файлик формируется но не скачивается. Вот jquery:
$("#exportStaffCsv").on('click', function (e) {
        e.preventDefault();
        //var last_element = getUrlParam();
        $.ajax({
            url: "/ru/tree/export-staff-csv",
            data: {dept: 4},
            success: function (resp) {
                //alert(resp);
            }
        });
    });
  • Вопрос задан
  • 267 просмотров
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
В ответ на ajax возвращайте url к файлу и уже в js обрабатывайте ответ сервера, перенаправляя пользователя на полученный url
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы