генерация файла на лету php

Discussion in 'PHP' started by dondy, 27 Aug 2015.

  1. dondy

    dondy Member

    Joined:
    5 Jun 2015
    Messages:
    560
    Likes Received:
    61
    Reputations:
    5
    после отправки формы с данными, вывожу ссылку для скачивания результата, кликнув на которую скачивается результат в txt файле.

    сделал код, генерирую им данные на лету:
    PHP:
    $resultat implode("\r\n"$_SESSION['resultat']);
    header('Content-Type: text/plain; charset=utf-8');
    header('Content-Type: application/octet-stream');
    header('Content-disposition: attachment; filename=ЗАЯВКА_№'.$_SESSION['number'].'.txt');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: private');
    echo 
    $resultat;
    exit();
    но есть проблема, обнаружил когда с браузера телефона на андроиде нажав на ссылку - скачивать пытаюсь, он не скачивает файл, пытается скачать файл не тот который отдается, name.bin и прерывает загрузку (оканчивается на bin почему то)

    все остальные браузеры нормально качают txt файл с нужным содержимим и правильным названием!
    как правильно и кроссбраузерно отдавать файлы? из за чего такая проблема ?
     
  2. TANZWUT

    TANZWUT Крёстный отец :)

    Joined:
    22 Jun 2005
    Messages:
    1,474
    Likes Received:
    716
    Reputations:
    744
    Попробуй вот так, filename в кавычках и расширение с большими буквами, проверил на BS Andriod 4.4.2
    Code:
    header('Content-disposition: attachment; filename="ЗАЯВКА_№'.mt_rand().'.TXT"');
    UPD:
    Хотя и без кавычек и в ловеркейс тоже загружается (Apache/1.3.31 (Win32) PHP/5.0.0) => на более старых версиях андрюши так - *.bin.
    Вот линк в тему http://www.digiblog.de/2011/04/android-and-the-download-file-headers/
     
    _________________________
    #2 TANZWUT, 27 Aug 2015
    Last edited: 27 Aug 2015
    dondy likes this.
  3. dondy

    dondy Member

    Joined:
    5 Jun 2015
    Messages:
    560
    Likes Received:
    61
    Reputations:
    5
    попробовал, после внесения изменений так же скачивает scriptname.bin, пробовал ещё имя фиксированое файлу сделать на латинице - результат такой же