За последние 24 часа нас посетили 22598 программистов и 1193 робота. Сейчас ищут 750 программистов ...

расширение файла при скачке в опере

Тема в разделе "PHP для новичков", создана пользователем AniMEshKa, 1 апр 2008.

  1. AniMEshKa

    AniMEshKa Активный пользователь

    С нами с:
    4 сен 2007
    Сообщения:
    151
    Симпатии:
    0
    Адрес:
    Минск
    при подаче файла в загрузку в ИЕ всё корректно передаёт и предлагает имя файла соответствующее истинному? то есть к примеру ex.doc
    PHP:
    1.  
    2.     $filename = "ex.doc";
    3.     $filesave = ..
    4.     header('Content-type: application/octet-stream');
    5.     header('Content-Disposition: attachment; filename= "'.$filename.'"');
    6.     readfile($filesave);
    при использовании оперы предлагается сохранить файл с расширением html то есть ex.html

    подскажите как исправить
    Спасибо
     
  2. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Наверное тут надо прописать на MIME-тип MSWord'a. Если не ошибаюсь.
     
  3. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Код (Text):
    1. 'Content-type: application/octet-stream name="'.$filename.'"'
    хотя я раньше не приглядывался, но думал, что просле "application/octet-stream" нужно ставить ";", ан нет - не видит имя файла опера тогда :)
     
  4. AniMEshKa

    AniMEshKa Активный пользователь

    С нами с:
    4 сен 2007
    Сообщения:
    151
    Симпатии:
    0
    Адрес:
    Минск
    тут ведь не именно в ворде дело.. любой файл так преобразует. а данный код
    PHP:
    1. header('Content-type: application/octet-stream');
    я подсмотрела на форуме чтобы выводило нормлаьно файл на закачку. но видно чего-то нехватает. :(
     
  5. sword dancer

    sword dancer Активный пользователь

    С нами с:
    17 фев 2008
    Сообщения:
    295
    Симпатии:
    0
  6. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Попробуй так:
    PHP:
    1. <?php
    2. $filename = "ex.doc";
    3. $filesave = ..
    4.  
    5. header('Cache-Control: private');
    6. header('Content-Type: application/octet-stream');
    7. header('Content-Disposition: attachment; filename="'.$filename.'"');
    8. header('Content-Transfer-Encoding: binary');
    9. header('Accept-Ranges: bytes');
    10. header('HTTP/1.0 200 OK');
    11. header('Content-Length: '.filesize($filesave));
    12. readfile($filesave);
    P.S. Давно писал, пример с докачкой. Тестировал на разных браузерах.
     
  7. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    lexa
    и так не сработает
     
  8. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    AniMEshKa
    Я попробовал. Рабочий пример:
    PHP:
    1.  
    2. <?php
    3. $filename = "ex.doc";
    4. header('Content-type: application/octet-stream');
    5. header('Content-Disposition: attachment; filename= "'.$filename.'"');
    6. ?>
    7.  
    При readfile хочет сохранить as html.
     
  9. AniMEshKa

    AniMEshKa Активный пользователь

    С нами с:
    4 сен 2007
    Сообщения:
    151
    Симпатии:
    0
    Адрес:
    Минск
    всё равно одно и тож. подставляет опера в название файла вместолюбого расширения htm свой. хотя явно передаю название файла с другим расширением. подскажите ещё чего.. плз
     
  10. AniMEshKa

    AniMEshKa Активный пользователь

    С нами с:
    4 сен 2007
    Сообщения:
    151
    Симпатии:
    0
    Адрес:
    Минск
    нашла следуюущую статью по теме.. но вот что-то не помогло. попробуйте кто-нить сделать как написано.. а то опять html везде подставляется как ни крути
     
  11. AniMEshKa

    AniMEshKa Активный пользователь

    С нами с:
    4 сен 2007
    Сообщения:
    151
    Симпатии:
    0
    Адрес:
    Минск
    о всё.. получилось по вышеприведенному коду. тока вот надо корректно подставлять тип документа image/jpg, application/msword и тд
     
  12. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    AniMEshKa
    ты прикалываешься??? глянь мой самый первый пост...
    будешь подставлять "корректные" image/jpg браузер вместо сохранения и выведет картинку в окошко...
     
  13. R22

    R22 Активный пользователь

    С нами с:
    24 мар 2008
    Сообщения:
    78
    Симпатии:
    0
    Адрес:
    Odessa
    Еще при попытке скачивания проверяй запрос на закачку. Т.е. если url выглядит так:

    .../save_as?file=name_of_file.doc

    проверяй есть ли файл name_of_file.doc на сервере, а потом посылай header.
    При просмотре статистики увидел как какие-то непонятные роботы преобразут url в вид:

    .../save_as?http%20www.sitenameandothershit.com

    Проблем они не делают, но header посылается первым и эти роботы просто сохраняют файл с ошибкой твоего скрипта на свой диск, тем самым отъедают у тебя траффик. Тут дело не в жадности, а в правильности. (Таких запросов за день может быть около 100).