Автор Тема: Скачать csv файл с сервера  (Прочитано 376 раз)

15 Ноябрь 2021, 16:21:43
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте
Создаю в классе необходимый csv файл, сохраняю его в папке admin100/import/import.csv
По ftp я его могу скачать, но хотелось бы скачивать из браузера.
За образец взял раздел Импорт CSV
Получилось так:
<a class="list-group-item _blank" href="../admin100/import/import.csv" target="_blank">
Скачать файл
</a>
При нажатии - открывается содержимое этого файла в новой вкладке браузера. Как модернизировать, чтобы скачивался файл?
16 Ноябрь 2021, 00:15:36
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В браузере в настройках установите режим скачивания для файлов с разрешением csv.
16 Ноябрь 2021, 14:17:41
Ответ #2
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Разобрался, нужно добавить download
<a class="list-group-item _blank" href="../admin100/import/import.csv" target="_blank" download>
Скачать файл
</a>
16 Ноябрь 2021, 14:27:14
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Будет скачивать не во всех браузерах
https://www.w3schools.com/tags/att_a_download.asp
Работает только в Chrome 14+ и Firefox 20+. При использовании рекомендуют добавлять проверку на совместимость
if(typeof a.download != "undefined") { // поддерживается браузером}
else {// не поддерживается браузером}
16 Ноябрь 2021, 14:32:08
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В браузере в настройках установите режим скачивания для файлов с разрешением csv.
Для себя подойдет, для клиентов нет.
16 Ноябрь 2021, 14:36:49
Ответ #5
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Для себя подойдет, для клиентов нет.
Пока нужно для себя, мой браузер поддерживает download
Всем спасибо!
09 Декабрь 2021, 13:23:26
Ответ #6
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не долго я радовался: при скачивании по ссылке файл где-то в браузере кэшируется и даже после изменения этого файла на сервере скачивается его первая версия. Даже после удаления этого файла, он продолжает скачиваться. пробовал на 3-х браузерах.
От этого способа пришлось отказаться.
Теперь делаю так:
отправляю в контроллер ajax запрос, а в контроллере выполняю это:
$file_name = Tools::getValue('filename');
header("Content-Length: ".filesize($file_name));
header("Content-Disposition: attachment; filename=".$file_name;
header("Content-Type: application/x-force-download; name=\"".$file_name."\"");
readfile($file_name);
            $this->ajaxDie(Tools::jsonEncode(array(
                'result' => true,
                'restext' => 'Файл подготовлен!',
            )));
Все прекрасно работает, но только в Админ-части.
При попытке сделать такое во Фронте, после выполнения строки readfile($file_name) ajax возвращает exception = parsererror.
И в jqXHR.responseText находится содержимое этого файла с "приляпаным" в конце  '{"result":true,"restext":"\u0424\.......u043d!"}',
.
Почему в админке работает, а во фронте нет?
Спасибо
14 Декабрь 2021, 12:57:17
Ответ #7
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Для фронтофиса добавьте _token= или отключите использование токенов в магазине
Улучшить безопасность магазина Нет
14 Декабрь 2021, 13:10:34
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
header('Cache-Control: no-store, no-cache');
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!