Модераторы: Illuminaty
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ссылка с кириллицей, браузер не выдаёт файл на скачивание 
V
    Опции темы
numerovan
Дата 17.3.2013, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Здравствуйте. Есть следующая задача:

имееться файл на сервере , в имени файла присудтствует кириллица, обычная ссылка ссылаеться на этот файл, но при попытке скачать этот файл ни чего не получаеться. Браузер, уже после, говорит что url не найден, и в адресе кириллица кирилица оторажена скракозаблями. 

Где скрываеться проблема ?

Скрипты видят нормально этот файл и отображаються в браузере тоже хорошо, но проблема именно при скачивании ... как буд-то сам браузер уже не понимает в какой кодировке его качать.
PM MAIL   Вверх
ksnk
Дата 18.3.2013, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Цитата(numerovan @  17.3.2013,  19:27 Найти цитируемый пост)
обычная ссылка ссылаеться на этот файл

Что означает эта фраза,

Цитата(numerovan @  17.3.2013,  19:27 Найти цитируемый пост)
но при попытке скачать этот файл ни чего не получаеться. Браузер, уже после, говорит что url не найден

и эта?

Просто скачать файл и просмотреть его в броузере - вообще говоря одна и та же операция, с точки зрения сервера.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
numerovan
Дата 18.3.2013, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



Разобрался с проблемой. Эту тему нужно было опубликовывать в разделе php.
Ссылка представляет из себя следующее: http://site.ru/название файла.mp3
На странице отображающей ссылку на этот файл в теге "а" атрибут href имел значение "название файла.mp3" (кириллица и с пробелом внутри).
Решение задачи следующее:
1. создать отдельную страницу, каторая принимает относительный адрес файла, у меня она под названием "download.php" в кодировке изначально в utf-8
2. ссылки на скачивание должны вести конечно же на эту страницу, н-р: http://site.ru/download.php?file=folder_1/folder_2/название файла.mp3
3. далее уже работаем заголовками в программе, а так же с кодировками названий (файлов, папок)

пошарив уже реализованные решения на эту тему, написал своё решение, тестил на новых версиях браузеров, IE только 9-й.
Код

if (!empty($_GET['file']) && is_file(iconv("UTF-8", "cp1251", $_GET['file'])) && (substr($_GET['file'], -4)==".mp3") ){
    $path = substr($_GET['file'], 0, strrpos($_GET['file'], "/"));
    $file = iconv("UTF-8", "cp1251", $_GET['file']);
    
    header("HTTP/1.1 200 OK");
    
    header('Content-Type: application/force-download');
    header("Content-Length: " . filesize($file));
    header("Content-Description: File Transfer"); // и без этого хорошо качаеться
    header("Content-Transfer-Encoding: binary"); // и без этого хорошо качаеться
    
              // здесь код нужен для того чтоб браузер саму кариллицу на компе нормально отобразил
    if( stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') )    
        header('Content-Disposition: attachment; filename="' . basename($file) . '"');
    else
        header('Content-Disposition: attachment; filename="' . basename($_GET['file']) . '"');

    readfile($path . "/" . basename($file));
}
else header('HTTP/1.1 404 Not found');


Всем спасибо за просмотр данной темы, надеюсь вышенаписанное будет полезно и другим.

PM MAIL   Вверх
ksnk
Дата 18.3.2013, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



numerovanrawurlencode должен был помочь.
Код

$filename="Приключения Электроника.pdf"; // utf-8
echo '<a href="http://mysite.com/download/', rawurlencode($filename),'">'.$filename.'</a>';

Адекватные броузеры такие ссылки показывают в адресной строке в читаемом виде. 




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
numerovan
Дата 19.3.2013, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 549
Регистрация: 1.12.2007

Репутация: нет
Всего: 2



такой способ пробывал, не помогает.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Вёрстка веб-сайтов | Следующая тема »


 




[ Время генерации скрипта: 0.0756 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.