[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: кодировка файла при его перемещении функцией...
Страницы: 1, 2
Rodger1956630
Всем привет! У меня такая проблема:
Функция move_uploaded_file, при перемещении файла с временного хранилища сервера на новое место, которое указывается вторым параметром - move_uploaded_file ( string $filename , string $destination ), сохраняет файлы изображений с такими именами: СЊРіР°Р˜РІР°РЅРѕРІРЅР°.JPG! Причём, изначально имя было таким: Ольга Ивановна.JPG
Видимо, это связанно с кодировкой. Но вот в чём проблема: внутри кода php, если попытаться вывести эту строку с помощью функции "echo", то строка правильно отображается. Более того, если проверить как закодированы эти символы с помощью функции mb_detect_encoding, то в ответ получаю кодировку UTF-8. Но на диске я вижу совершенно другие имена: СЊРіР°Р˜РІР°РЅРѕРІРЅР°.JPG
Буду благодарен за помощь! Заранее благодарю.)
Winston
Перекодировать имя файла при перемещении, примерно так
$filename = iconv('cp1251', 'utf-8', $_FILES['filename']['name']);
Rodger1956630
Спасибо! Я уже пробовал этой функцией вернуть файл в нормальное состояние, но пока нет результата. Если получиться, то я отпишусь.
Winston
А как именно ты ее пробовал?
Rodger1956630
Да видимо не совсем правильно. Вот код функции "move_uploaded_file":
@move_uploaded_file($_FILES[$image_fieldname]['tmp_name'], $upload_filename)
or handle_error("возникла проблема сохранения вашего изобразения " .
"в его постоянном месте.",
"ошибка, связанная с правами доступа при перемещении " .
"файла в {$upload_filename}");
Rodger1956630
Я пробовал разными способами, но внедрить непосредственно в "move_uploaded_file", я не смог. Пытался по отдельности применить к переменным: $image_fieldname, $upload_filename. Резултата не было.
Rodger1956630
Вот так ещё пробовал:
@move_uploaded_file(iconv('cp1251', 'utf-8', $_FILES[$image_fieldname]['tmp_name']), $upload_filename)
or handle_error("возникла проблема сохранения вашего изобразения " .
"в его постоянном месте.",
"ошибка, связанная с правами доступа при перемещении " .
"файла в {$upload_filename}");
Winston
Перекодировать нужно
Цитата (Rodger1956630 @ 7.03.2014 - 19:18)
$upload_filename

а не временное имя файла.
Rodger1956630
Вот в таком синтаксисе не получается, если вставить этот кусок кода, после функции "move_uploaded_file":
$upload_filename = iconv('cp1251', 'utf-8', $_FILES[$upload_filename]['name']);

Или тут ошибку я допустил?
Rodger1956630
Кстати, если в переменной $upload_filename будут храниться только английские символы, то всё нормально отображается. Ну это я к слову...
Winston
Цитата (Rodger1956630 @ 7.03.2014 - 19:41)
не получается, если вставить этот кусок кода, после функции "move_uploaded_file":

Нужно вставить не ПОСЛЕ, а ДО функции.
Rodger1956630
В таком варианте, вообще не работает, выдаёт ошибку и не создаёт никакого файла на диске:
$upload_filename = iconv('cp1251', 'utf-8', $_FILES[$upload_filename]['name']);
@move_uploaded_file($_FILES[$image_fieldname]['tmp_name'], $upload_filename)
or handle_error("возникла проблема сохранения вашего изобразения " .
"в его постоянном месте.",
"ошибка, связанная с правами доступа при перемещении " .
"файла в {$upload_filename}");
Rodger1956630
Возможно, с именами проблема. Я сам не пойму в чём дело.
Rodger1956630
Возможно, второй параметр не верно задан. То что я зелёным выделил:
$upload_filename = iconv('cp1251', 'utf-8', $_FILES[$upload_filename]['name']);
Rodger1956630
Есть! Решил!)
Быстрый ответ:

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