[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Чтение файлов из директорий
Chel_Hacker777
Нужно показать список файлов из директории. Можно это сделать так например:

$dir='/home';

if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if($file!='.' && $file!='..')
{
echo("$file");
echo('<br>');
}
}

closedir($dh);
}
}


Но если имя файла или каталога будет написано русскими буквами, то выводится чушь. Не соответствуют кодировки. Как можно корректно показать все имена файлов и каталогов? Помогите!



Спустя 17 минут, 50 секунд (7.01.2011 - 02:21) waldicom написал(а):
Можно так:

$file = iconv("ISO-8859-1", "UTF-8", $file);
echo("$file");
echo('<br>');

Или выставить правильную кодировку страницы.

Спустя 1 час, 47 минут, 39 секунд (7.01.2011 - 04:08) Chel_Hacker777 написал(а):
waldicom
В общем я попробовал вписать:

$file = iconv("ISO-8859-1", "UTF-8", $file);


Запускаю скрипт, пишет снова фигню, но уже немного другую. Я попробовал вместо UTF-8 повводить другие кодировки. У меня из названия файла пропали 2 символа. Файл назывался 168x228(Женя).png, а стал называться 168x228(Жен.png Я только читал файлы директории, никаких действий переименовываний не делал. Потом я через фтп переименовал файл в 168x228(Женя).png, обновляю список файлов по фтп и снова название 168x228(Жен.png Я переименовал файл в 168x228(просто файл).png Больше файл не переименовывался сам по себе. Потом я в разочарованных чувствах убираю из скрипта строку:

$file = iconv("ISO-8859-1", "UTF-8", $file);


Запускаю скрипт и у меня все русские названия показываются на русском.
Возможно при выполнении скрипта когда еще была строка вписана произошли какие-либо изменения в кодировке системы, может быть такое? В любом случае спасибо Вам, что поддали идею!

Спустя 1 минута, 30 секунд (7.01.2011 - 04:10) inpost написал(а):
Chel_Hacker777
на заметку, на сервере лучше не хранить русские имена файлов.

Спустя 12 минут, 42 секунды (7.01.2011 - 04:22) Chel_Hacker777 написал(а):
inpost
Полностью с Вами согласен! Но просто это файлы (фильмы, игры, архивы и тд), которые заливают журналисты сайта, не буду же я им постоянно утверждать, что нужно каждый файл переименовывать перед тем как заливать, да и можно забыть переименовать файл. Вот я и хочу, чтоб скрипт переименовывал файлы в транслит, а чтоб переименовать в транслит нужно раскодировать оригинальное рускоязычное название.

Спустя 12 минут, 35 секунд (7.01.2011 - 04:35) inpost написал(а):
Chel_Hacker777
Может и не выход, но почему бы просто не поставить блокировку на русские названия?

Спустя 8 часов, 6 минут, 59 секунд (7.01.2011 - 12:42) Basili4 написал(а):
Chel_Hacker777
либо при обнаружении кириллических буков менять их на транслит автоматически.

Спустя 41 минута, 14 секунд (7.01.2011 - 13:23) twin написал(а):
Цитата
а чтоб переименовать в транслит нужно раскодировать оригинальное рускоязычное название.
Это нужно делать до того, как файл загружен

Спустя 3 часа, 40 минут, 52 секунды (7.01.2011 - 17:04) Chel_Hacker777 написал(а):
Вы не так поняли!
Файлы заливаются по фтп, а не через PHP скрипт!
Скрипт мне нужен для переименования файлов и перемещения их в другую директорию. В общем у нескольких журналистов есть доступ по фтп к своим директориям только. Они льют по фтп в свою директорию файлы, а затем через скрипт перемещают файлы все в одну директорию и при перемещении получают ссылку на скачку файла из той директории, но через непривилегилированный фтп аккаунт (есть права только на чтение). Ну а потом эту полученную ссылку они могут вставлять в новостях. Думаю, доходчиво разъяснил суть скрипта.

Спустя 17 минут, 26 секунд (7.01.2011 - 17:22) twin написал(а):
Цитата
Разработчики совершенствуют интерфейс своих программ, делая его более простым и удобным. Юзеры тоже не стоят на месте, они становятся всё тупее и тупее.
Неужели этим нескольким журналистам так сложно объяснить, что нельзя пользоваться кирилицей... Куда мир катится...

Спустя 2 часа, 18 секунд (7.01.2011 - 19:22) Chel_Hacker777 написал(а):
twin
Не нескольким, а примерно 30 человек имеют доступ по фтп. Уверен, что хоть один да сделает что-то не так...

Спустя 4 часа, 22 минуты, 22 секунды (7.01.2011 - 23:44) ИНСИ написал(а):
1. Создаешь файл в utf-8 кодировке
2. Вставляешь данный код:
$dir = '/home';
if(is_dir($dir)) {
if($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if($file != '.' && $file != '..') {
echo basename($file) . '<br />';
}
}

closedir($dh);
}
}

Спустя 1 час, 23 минуты, 14 секунд (8.01.2011 - 01:07) SlavaFr написал(а):
а зачем разрешать юзерам вообще пользоватся ftp да еще таким, которые немогут соблюдать правил?
пусть делают нормальный upload, а если это невозможно, то надо просто специальный клиент например на Java писать и передовать файлы посредством soap на сервер.

Обычно файлы из upload запоминают под подходящим названием в папки, а их настоящие названия содержат в базе данных вместе с такими важными данными как ид юзера, тип файла, настоящий путь к файлу, коментарии к файлу. В противном случае ситуация может быстро выйти из под контроля.

Спустя 13 часов, 51 минута, 32 секунды (8.01.2011 - 14:59) Chel_Hacker777 написал(а):
SlavaFr
Файлы большие, больше 1-го, 2-х гигов. Передавать через php скрипт и другие подобные способы нельзя! Так как у всех журналистов провайдер byfly, а у byfly в общем-то как и у многих других провайдеров иногда дисконнетится интернет... И если передавать через скрипты, то при обрыве связи придется все заливать заново, а с помощью фтп можно легко продолжить передачу.

Спустя 2 минуты, 4 секунды (8.01.2011 - 15:01) ИНСИ написал(а):
Chel_Hacker777 а че мой вариант не сработал что-ли? Проверил у себя, все ок выводится.

Спустя 2 часа, 56 минут, 41 секунда (8.01.2011 - 17:58) Chel_Hacker777 написал(а):
welbox2
Пробовал использовать функцию basename, при этом из файла вырезаются все русскоязычные символы... Меня это не устраивает.
В общем после того как я использовал это:
$file = iconv("ISO-8859-1", "UTF-8", $file);

и менял кодировки, то у меня стало нормально работать, но не со всеми файлами. Имена некоторых файлов по-прежднему пишет что-то типа такого: Детский глаз Глаз ребенка.avi

Спустя 1 день, 43 минуты, 51 секунда (9.01.2011 - 18:42) ИНСИ написал(а):
попробуй создать в корневой директории файл .htaccess и в нем прописать
AddDefaultCharset UTF8


а в сам файл в начале добавить:
header('Content-type: text/html; charset=utf-8');

Спустя 5 часов, 39 минут, 16 секунд (10.01.2011 - 00:21) Chel_Hacker777 написал(а):
welbox2
Уже все нормально, я так сделал:
$file_iconv = iconv("utf-8", "windows-1251", $file);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.