Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: как в header("Content ..." ) указать русское имя файла с пробелами?
Форумы портала PHP.SU » PHP » Программирование на PHP » как в header("Content ..." ) указать русское имя файла с пробелами?

Страниц (2): [1] 2 »
 

1. DlTA - 14 Декабря, 2010 - 17:53:00 - перейти к сообщению
как вернуть в браузер файл с именем содержащим пробелы ?
header("Content-disposition: attachment; filename=Мой файл.doc" );
2. Мелкий - 14 Декабря, 2010 - 17:55:20 - перейти к сообщению
взять имя в кавычки.
3. DlTA - 14 Декабря, 2010 - 17:58:52 - перейти к сообщению
'мой файл'.doc
"мой файл".doc
'мой файл.doc'

возвращает файл с именем 'мой
4. OrmaJever - 14 Декабря, 2010 - 20:18:07 - перейти к сообщению
закодировать в url. пробел это %20
5. DlTA - 14 Декабря, 2010 - 21:28:52 - перейти к сообщению
прописываю: header("Content-disposition: attachment; filename=Мой%20файл.doc" );
возвращает фай с именем Мой%20файл.doc
(Добавление)
хотя в IE вернул правильное имя файла, может там где то еще надо указать чет для правильного принятия?
(Добавление)
оказывается IE только отобразил сохраняемое имя правильно сохранил он его тоже с %20
6. JROUD - 15 Декабря, 2010 - 00:28:50 - перейти к сообщению
Мой файл.doc = %D0%9C%D0%BE%D0%B9%20%D1%84%D0%B0%D0%B9%D0%BB.doc
7. DlTA - 15 Декабря, 2010 - 00:41:05 - перейти к сообщению
ну да, и на получении имя файла будет
%D0%9C%D0%BE%D0%B9%20%D1%84%D0%B0%D0%B9%D0%BB.doc

использование urlencode() результат желанный не дает.
8. Uchkuma - 15 Декабря, 2010 - 01:03:49 - перейти к сообщению
Да, я тоже с этой проблемой мучился и не нашел универсального решения для всех браузеров Недовольство, огорчение Единственное - не использовать кириллицу в названии файлов.
9. DlTA - 15 Декабря, 2010 - 01:39:12 - перейти к сообщению
б..н, но ведь есть все же серваки которые возвращают файлы с полноценными именами, хотя судя из заголовков имя файла передается не в заголовке.
(Добавление)
пример ссылки
"http://gz[dot]dvinaland[dot]ru/download/[dot][dot][dot]F0E1}_Конкурсная документация.doc"
10. Uchkuma - 15 Декабря, 2010 - 02:02:26 - перейти к сообщению
Там сервер Microsoft, с кириллицей дружит.
11. DlTA - 15 Декабря, 2010 - 03:45:33 - перейти к сообщению
Uchkuma пишет:
Там сервер Microsoft, с кириллицей дружит.
дык а где связь? какая разница что там на сервере если возвращать можно в желанной кодировке.
и проблема ведь не в кодировке а в том что имя файла содержит символы пробела, и когда их возвращаешь в заголовке то все это не правильно интерпритируется, а если пробельные символы конвертнуть в %20 то это не воспринимается браузером как код символа
возникает вопрос: как указать браузеру что ему делать с инфой (всмысле что имя надо правильно раскодировать)?
12. Мелкий - 15 Декабря, 2010 - 09:43:25 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. header("Content-Type: application/download; charset=utf-8");
  2. header("Content-Disposition: attachment; filename=\"скриптики всякие разные\"");

Все установленные браузеры распарсили отлично - Opera, Мурзилка и epiphany (Gecko-движок)
13. Uchkuma - 15 Декабря, 2010 - 10:16:12 - перейти к сообщению
Вот уже не помню, в чем у меня была проблема (год уже прошел), но точно с отдачей кириллических имен. Но, кажется, имя файла отдавалось скриптом, а не то, что в файловой системе. Скорее всего я просто напутал с кодировкой в заголовке. Надо бы поднять это дело Улыбка
14. DeepVarvar - 15 Декабря, 2010 - 11:38:55 - перейти к сообщению
Мелкий это потому, что название файла указано в двойных кавычках, а текст в них воспринимается как явные сущности, например "\n" "\r\n" и прочие (1)

Uchkuma для одинарных кавычек как вариант str_replace(" ","_",$filename); (2)
15. DlTA - 15 Декабря, 2010 - 12:01:40 - перейти к сообщению
оказалось вся проблема только в том что надо в двойные кавычки оформлять название файла, вместе с расширением
header("Content-disposition: attachment; filename=\"Мой файл.doc\"");
прохавало даже без указания кодировки
PHP:
скопировать код в буфер обмена
  1. header('Content-type: application/msword;');
  2. header('Content-Transfer-Encoding: Binary');   
  3. header("Content-disposition: attachment; filename=\"Мой файл.doc\"");


всем спасибо.

 

Powered by ExBB FM 1.0 RC1