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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: как в header("Content ..." ) указать русское имя файла с пробелами?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: header("Content-disposition: attachment; filename=мой файл.doc" );
DlTA
Отправлено: 14 Декабря, 2010 - 17:53:00
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




как вернуть в браузер файл с именем содержащим пробелы ?
header("Content-disposition: attachment; filename=Мой файл.doc" );
 
 Top
Мелкий Супермодератор
Отправлено: 14 Декабря, 2010 - 17:55:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




взять имя в кавычки.


-----
PostgreSQL DBA
 
 Top
DlTA
Отправлено: 14 Декабря, 2010 - 17:58:52
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




'мой файл'.doc
"мой файл".doc
'мой файл.doc'

возвращает файл с именем 'мой
 
 Top
OrmaJever Модератор
Отправлено: 14 Декабря, 2010 - 20:18:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




закодировать в url. пробел это %20


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DlTA
Отправлено: 14 Декабря, 2010 - 21:28:52
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




прописываю: header("Content-disposition: attachment; filename=Мой%20файл.doc" );
возвращает фай с именем Мой%20файл.doc
(Добавление)
хотя в IE вернул правильное имя файла, может там где то еще надо указать чет для правильного принятия?
(Добавление)
оказывается IE только отобразил сохраняемое имя правильно сохранил он его тоже с %20
 
 Top
JROUD
Отправлено: 15 Декабря, 2010 - 00:28:50
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




Мой файл.doc = %D0%9C%D0%BE%D0%B9%20%D1%84%D0%B0%D0%B9%D0%BB.doc
 
 Top
DlTA
Отправлено: 15 Декабря, 2010 - 00:41:05
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




ну да, и на получении имя файла будет
%D0%9C%D0%BE%D0%B9%20%D1%84%D0%B0%D0%B9%D0%BB.doc

использование urlencode() результат желанный не дает.
 
 Top
Uchkuma
Отправлено: 15 Декабря, 2010 - 01:03:49
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Да, я тоже с этой проблемой мучился и не нашел универсального решения для всех браузеров Недовольство, огорчение Единственное - не использовать кириллицу в названии файлов.
 
 Top
DlTA
Отправлено: 15 Декабря, 2010 - 01:39:12
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




б..н, но ведь есть все же серваки которые возвращают файлы с полноценными именами, хотя судя из заголовков имя файла передается не в заголовке.
(Добавление)
пример ссылки
"http://gz[dot]dvinaland[dot]ru/download/[dot][dot][dot]F0E1}_Конкурсная документация.doc"
 
 Top
Uchkuma
Отправлено: 15 Декабря, 2010 - 02:02:26
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Там сервер Microsoft, с кириллицей дружит.
 
 Top
DlTA
Отправлено: 15 Декабря, 2010 - 03:45:33
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Uchkuma пишет:
Там сервер Microsoft, с кириллицей дружит.
дык а где связь? какая разница что там на сервере если возвращать можно в желанной кодировке.
и проблема ведь не в кодировке а в том что имя файла содержит символы пробела, и когда их возвращаешь в заголовке то все это не правильно интерпритируется, а если пробельные символы конвертнуть в %20 то это не воспринимается браузером как код символа
возникает вопрос: как указать браузеру что ему делать с инфой (всмысле что имя надо правильно раскодировать)?
 
 Top
Мелкий Супермодератор
Отправлено: 15 Декабря, 2010 - 09:43:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




PHP:
скопировать код в буфер обмена
  1. header("Content-Type: application/download; charset=utf-8");
  2. header("Content-Disposition: attachment; filename=\"скриптики всякие разные\"");

Все установленные браузеры распарсили отлично - Opera, Мурзилка и epiphany (Gecko-движок)


-----
PostgreSQL DBA
 
 Top
Uchkuma
Отправлено: 15 Декабря, 2010 - 10:16:12
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


Помог: 6 раз(а)




Вот уже не помню, в чем у меня была проблема (год уже прошел), но точно с отдачей кириллических имен. Но, кажется, имя файла отдавалось скриптом, а не то, что в файловой системе. Скорее всего я просто напутал с кодировкой в заголовке. Надо бы поднять это дело Улыбка
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Декабря, 2010 - 11:38:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Мелкий это потому, что название файла указано в двойных кавычках, а текст в них воспринимается как явные сущности, например "\n" "\r\n" и прочие (1)

Uchkuma для одинарных кавычек как вариант str_replace(" ","_",$filename); (2)
 
 Top
DlTA
Отправлено: 15 Декабря, 2010 - 12:01:40
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




оказалось вся проблема только в том что надо в двойные кавычки оформлять название файла, вместе с расширением
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\"");


всем спасибо.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB