
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
۩
Дата
|
![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 15 Пользователь №: 39086 На форуме: Карма: ![]() |
Всем привет! У меня такая проблема:
Функция move_uploaded_file, при перемещении файла с временного хранилища сервера на новое место, которое указывается вторым параметром - move_uploaded_file ( string $filename , string $destination ), сохраняет файлы изображений с такими именами: СЊРіР°Рвановна.JPG! Причём, изначально имя было таким: Ольга Ивановна.JPG Видимо, это связанно с кодировкой. Но вот в чём проблема: внутри кода php, если попытаться вывести эту строку с помощью функции "echo", то строка правильно отображается. Более того, если проверить как закодированы эти символы с помощью функции mb_detect_encoding, то в ответ получаю кодировку UTF-8. Но на диске я вижу совершенно другие имена: СЊРіР°Рвановна.JPG Буду благодарен за помощь! Заранее благодарю.) |
![]() |
|
![]() ![]() ④ ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 9509 Пользователь №: 18161 На форуме: Карма: 552 ![]() |
Перекодировать имя файла при перемещении, примерно так
$filename = iconv('cp1251', 'utf-8', $_FILES['filename']['name']); |
![]() |
۩
Дата
|
![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 15 Пользователь №: 39086 На форуме: Карма: ![]() |
Спасибо! Я уже пробовал этой функцией вернуть файл в нормальное состояние, но пока нет результата. Если получиться, то я отпишусь.
|
![]() |
|
![]() ![]() ④ ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 9509 Пользователь №: 18161 На форуме: Карма: 552 ![]() |
А как именно ты ее пробовал?
|
![]() |
۩
Дата
|
![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 15 Пользователь №: 39086 На форуме: Карма: ![]() |
Да видимо не совсем правильно. Вот код функции "move_uploaded_file":
@move_uploaded_file($_FILES[$image_fieldname]['tmp_name'], $upload_filename) or handle_error("возникла проблема сохранения вашего изобразения " . "в его постоянном месте.", "ошибка, связанная с правами доступа при перемещении " . "файла в {$upload_filename}"); |
![]() |
۩
Дата
|
![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 15 Пользователь №: 39086 На форуме: Карма: ![]() |
Я пробовал разными способами, но внедрить непосредственно в "move_uploaded_file", я не смог. Пытался по отдельности применить к переменным: $image_fieldname, $upload_filename. Резултата не было.
|
![]() |
۩
Дата
|
![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 15 Пользователь №: 39086 На форуме: Карма: ![]() |
Вот так ещё пробовал:
@move_uploaded_file(iconv('cp1251', 'utf-8', $_FILES[$image_fieldname]['tmp_name']), $upload_filename) or handle_error("возникла проблема сохранения вашего изобразения " . "в его постоянном месте.", "ошибка, связанная с правами доступа при перемещении " . "файла в {$upload_filename}"); |
![]() |
|||
![]() ![]() ④ ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 9509 Пользователь №: 18161 На форуме: Карма: 552 ![]() |
Перекодировать нужно
а не временное имя файла. |
||
![]() |
۩
Дата
|
![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 15 Пользователь №: 39086 На форуме: Карма: ![]() |
Вот в таком синтаксисе не получается, если вставить этот кусок кода, после функции "move_uploaded_file":
$upload_filename = iconv('cp1251', 'utf-8', $_FILES[$upload_filename]['name']); Или тут ошибку я допустил? |
![]() |
۩
Дата
|
![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 15 Пользователь №: 39086 На форуме: Карма: ![]() |
Кстати, если в переменной $upload_filename будут храниться только английские символы, то всё нормально отображается. Ну это я к слову...
|
![]() |
|||
![]() ![]() ④ ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 9509 Пользователь №: 18161 На форуме: Карма: 552 ![]() |
Нужно вставить не ПОСЛЕ, а ДО функции. |
||
![]() |
۩
Дата
|
![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 15 Пользователь №: 39086 На форуме: Карма: ![]() |
В таком варианте, вообще не работает, выдаёт ошибку и не создаёт никакого файла на диске:
$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}"); |
![]() |
۩
Дата
|
![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 15 Пользователь №: 39086 На форуме: Карма: ![]() |
Возможно, с именами проблема. Я сам не пойму в чём дело.
Это сообщение отредактировал Rodger1956630 - 7.03.2014 - 21:49 |
![]() |
۩
Дата
|
![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 15 Пользователь №: 39086 На форуме: Карма: ![]() |
Возможно, второй параметр не верно задан. То что я зелёным выделил:
$upload_filename = iconv('cp1251', 'utf-8', $_FILES[$upload_filename]['name']); |
![]() |
۩
Дата
|
![]() Новичок ![]() Профиль Группа: Пользователь Сообщений: 15 Пользователь №: 39086 На форуме: Карма: ![]() |
Есть! Решил!)
|
![]() |
![]() ![]() ![]() |