Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/103: Рейтинг темы: голосов - 103, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 7

Скачивание файлов с русским названием

11.11.2011, 17:59. Показов 21836. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема такая. Из определенной папки считывается список фалов и выводится на сайт для скачивания пользователями. Названия файлов русские. Код:
PHP
1
2
3
4
 
$filename="Отчет за январь.xls";
$filenamecode=rawurlencode($filename);
 echo "<p><a  href=$filenamecode>$filename</a></p>";
В Mozille все хорошо: выдает окно скачивания или открытия именно с таким именем, а вот в IE или Opera проблема: вместо русского имени его 16-ный код ( результат работы функции rawurlencode() ). Знаю, что кириллица в именах не приветствуется, но пользователи, для которых это предназначено, встречаются не очень продвинутые, переименовывать каждый раз файлы или вытягивать их из архивов для них может быть проблемой. Заставить их пользоваться только Mozillой тоже не могу. Может, кто знает, как это решить?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.11.2011, 17:59
Ответы с готовыми решениями:

Удаление файлов с русским названием
Здравствуйте! Файлы загружаются на сервер и в названии всех файлов пробелы заменяются на знак &quot;_&quot;. При удалении файлов с...

Скачивание файлов с русским буквами
Добрый день. Такая проблема. При отдаче файлов пользователю файлы с латинскими символами выдаются, а вот файлы с русскими буквами нет...

GD ImageCreateFromPng не открывает файл с русским названием
$image = imagecreatefrompng(&quot;images/картинка.png&quot;); Не работает.

9
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
11.11.2011, 19:08
напиши транслитиратор. Названия файлов будут такими же только на латинице.
А чек, который не знает латинский (английский) алфавит пускай вырубит комп или лучше сожжет его
0
135 / 135 / 29
Регистрация: 18.10.2011
Сообщений: 306
11.11.2011, 19:41
А какие версии браузеров ?
PHP
1
2
3
$filename="Отчет за январь.xls";
$filenamecode=rawurlencode($filename);
echo "<p><a  href=$filenamecode>$filename</a></p>";
Chrome 15, firefox 8, Opera 11.52 , ie 9 - никаких проблем.
0
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 7
11.11.2011, 19:59  [ТС]
К браузерам пользователей доступа не имею - они могут находиться в другом городе, так-что установить им какую-либо новую версию не могу. А контингент специфический - бухгалтера, экономисты, причем иногда это дамы весьма почтенного возраста, им дай Бог готовый файл скачать, а уж переименовывать с латиницы - это что-то очень сложное.

Добавлено через 6 минут
С почтовых сайтов такие файлы нормально скачиваются и в старых версиях браузеров, значит, существует какой-то способ?
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 829
Регистрация: 09.09.2009
Сообщений: 29,554
11.11.2011, 20:09
прпосто папка
просто в .htaccess
Options +Indexes
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
11.11.2011, 20:10
Цитата Сообщение от Alisa1 Посмотреть сообщение
им дай Бог готовый файл скачать, а уж переименовывать с латиницы - это что-то очень сложное.
я имел ввиду вам написать транслитератор, который автоматически менял бы названия файлов на их транслит-аналоги
0
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 7
11.11.2011, 20:19  [ТС]
А скачиваться они будут с латиницей в названии или кириллицей? И как все-таки это делается на почтовиках, никто не знает?

Добавлено через 5 минут
Options +Indexes в .htaccess не помогает, тем более, при этой установке пользователь получает возможность прямого доступа к подкаталогам (набрав их в адресной строке), где находятся чужие файлы.
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
11.11.2011, 20:19
Цитата Сообщение от Alisa1 Посмотреть сообщение
И как все-таки это делается на почтовиках, никто не знает?
как сделать так к сожалению не знаю.
Сам сталкивался с этой проблемой.
Я сделал так чтобы автоматически менялись русские буквы на латинские.
Цитата Сообщение от Alisa1 Посмотреть сообщение
А скачиваться они будут с латиницей в названии или кириллицей?
с латиницей
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
11.11.2011, 20:26
Цитата Сообщение от Alisa1 Посмотреть сообщение
И как все-таки это делается на почтовиках, никто не знает?
http://site.ru/script.php?file=foobar
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if (isset($_GET['file']) && is_scalar($f = $_GET['file'])
    && preg_match('/^[-_a-z0-9](?:[-_a-z0-9.]*[-_a-z0-9])?$/', $f)
    && is_file($n = './files/' . $f))
{
    $h = fopen($n, 'r');
    if ($h) {
        header('HTTP/1.1 200 OK');
        header('Content-Type: application/force-download');
        header('Content-Length: ' . filesize($n));
        header('Content-Description: File Transfer');
        header('Content-Disposition: attachment; filename="Русское.имя.файла.txt"');
        header('Content-Transfer-Encoding: binary');
        
        fpassthru($h);
        fclose($h);
    }
    else {
        header('HTTP/1.1 403 Forbidden');
    }
}
else {
    header('HTTP/1.1 404 Not found');
}
2
0 / 0 / 0
Регистрация: 11.11.2011
Сообщений: 7
11.11.2011, 23:06  [ТС]
Спасибо, уже почти работает:
в IE8 запустила Ваш код со значением filename="Русское имя файла.txt", выдало ссылку "Русское_имя_файла.txt", т.е. пробелы заменяет подчеркиванием.

Добавлено через 19 минут
Оказывается, IE и в файлах почтовых вложений заменяет пробелы подчеркиванием (как-то раньше не обращала внимания), так что больше тут ничего не сделаешь, а в Opera 9.80 все нормально.
Большое спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2011, 23:06
Помогаю со студенческими работами здесь

Как открыть файл с русским названием?
Добрый день! Пишу программу, которая ищет слово в файле. Решил сначала попробовать в консоли #include &lt;iostream&gt; #include...

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

Присвоить текст заголовку чужого окна с русским названием (страдает кодировка)
Добрый день. Вот такой код #include &lt;windows.h&gt; int main(int argc) { HWND thehwnd;

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

Перебор в цикле с FOR файлов в каталоге с русским именем
Команда перебора файлов не проходит set Chain = D:\seva\Отдел ИО\Работы\Программы for %%A in (&quot;%Chain%\*.txt&quot;) do (echo...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru