кирилические символы в Content-Disposition: attachment

Тема в разделе "Как сделать...", создана пользователем zilon, 18 авг 2013.

  1. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    проблема с кирицой в названии файлов, если в названии нету русских букв, всё нормально скачиваеться, а если есть то пишут что файл не найден, но файл есть

    Warning: readfile(Клуб RAЙ - Кошмар на улице вязов (Mixed by dj Neele).php) [function.readfilefunction.readfile]: failed to open stream: No such file or directory in /var/www/newmuzo/data/www/scooter-vl.ru/muzon/club/3.php on line 6

    PHP:
    <?php
     
    $filename
    ="Клуб RAЙ - Кошмар на улице вязов (Mixed by dj Neele).php";
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename=\"$filename\"");
    readfile("$filename");
     
    ?>
    подскажите пожалуйста как исправить :thenks:
     
  2. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    359
    Симпатии:
    243
    Код:
    $filename="Клуб RAЙ - Кошмар на улице вязов (Mixed by dj Neele).php";
    $filename = iconv("cp1251","utf-8", $filename);
    Или "cp1251","utf-8" местами поменять.

    Если не поможет - вопросы:
    Страница (сам файл) в cp1251? Файлы по FTP заливаются или браузером?
     
  3. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    по ftp

    решил проблему так, может кому пригодится, get ом передаётся заголовок файла вместе с расширением в перменную $filename и далее код для скачивания

    PHP:
    $h fopen($filename'r');
          if(
    $h) {
          
    header('HTTP/1.1 200 OK');
          
    header('Content-Type: application/force-download');
          
    header('Content-Length: ' filesize($filename));
          
    header('Content-Description: File Transfer');
          
    header('Content-Disposition: attachment; filename="'.$filename.'"');
          
    header('Content-Transfer-Encoding: binary');
         
          
    fpassthru($h);
          
    fclose($h);
                } else { 
    header('HTTP/1.1 403 Forbidden'); }
     
  4. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    359
    Симпатии:
    243
    Изначальная ошибка - об отсутствии файла:

    $filename при этих манипуляциях точно не менялся? (там, кстати по первому куску кода файл с расширением .php в браузер должен уйти.. всё ли верно?)
     
  5. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    $filename должен лежать в тоже директории что и сам скрипт для скачивания иначе будет ошибка навсякий случай вот весь скрипт


     
  6. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    359
    Симпатии:
    243
    zilon, не услышал. В первом сообщении цитата:
     
  7. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    esche, :eek: таки да если поменять расширение на mp3 файл будет скачиватся, но ошибку видно не будет...