Задать вопрос
@pevxiw
Вэб

Как при загрузки файла на сервер сделать UTF8?

Здравствуйте, загружаю файл таким образом
<?
if(isset($_FILES['avatar'])){
    $formats = array("jpeg","jpg","gif","png");
    $format = @end(explode(".",$_FILES['avatar']['name']));
    if($_FILES['avatar']['size'] < 2097152) {
    if(in_array($format,$formats)){
        if(is_uploaded_file($_FILES['avatar']['tmp_name'])){
            
            $dir = "resource/img/avatars/".$_FILES['avatar']['name'];
            if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dir)){
              echo '<div class="inform"><div class="alert alert-success alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><strong>Супер!</strong> Теперь у вас новый аватар.</div></div>';
              mysqli_query($link,"UPDATE `users` SET `avatar`= '/$dir' WHERE id=$server");
            }
        }else{echo '<div class="inform"><div class="alert alert-danger alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><strong>Ошибка!</strong> Убедитесь что картинка формата (png,jpg,jpeg,png).</div></div>';}
        }else{mysqli_query($link,"UPDATE `users` SET `avatar`= '' WHERE id=$server");echo '<div class="inform"><div class="alert alert-danger alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><strong>Ошибка!</strong> Вы не указали картинку по этому она сбросилась.</div></div>';}
    }else{
        echo  '<div class="inform"><div class="alert alert-danger alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><strong>Ошибка!</strong> Убедитесь что картинка не больше 2мб.</div></div>';
    }
    
}
?>

и если файл написан на русском языке то сохраняется вот таком виде Без названия
На русском это (Без названия.png)
буду благодарен за помощь.

Если будет не сложно помогите сделать так чтобы картинка "jpeg","jpg","gif","png" которая 400px при загрузке сжимался в 150px
=)
  • Вопрос задан
  • 161 просмотр
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 2
Synacs
@Synacs
Начинающий
Попробуйте изменить кодировку php файла, а так же вставьте теги html, head body
и в head'е вставьте <meta charset="utf-8">
Ответ написан
@Yan-s
Используйте PDO
Не используйте подавление ошибок (@)
Добавьте проверку MIME загружаемого файла
Ознакомьтесь с fkn.ktu10.com/?q=node/7015
Постарайтесь отделить хотя бы формирование html от логики

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

Для манипуляции изображением, ресайза и тд используйте специализированную библиотеку, хороший вариант: image.intervention.io
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы