CB9TOIIIA
@CB9TOIIIA
Joomla разработчик

Проверка расширения файла перед загрузкой, как сделать?

Добрый вечер. К сожалению в php не силен, как можно сделать проверку перед загрузкой на сервер?

Необходимо грузить только файлы:
$allowedExts = array("ssa", "srt", "ass", "txt", "sub");

Постарался взять проверку из этого вопроса, но не смог правильно "подставить".

Мой код:
if (count($_FILES)) {
//  echo '<pre>'.print_r($_FILES, TRUE).'</pre>';

    $files = $_FILES['files'];

    $uploads_dir = dirname($_SERVER['SCRIPT_FILENAME']).'/subs/';
    foreach ($files["error"] as $key => $error) {
        $name = $files["name"][$key];

        if ($error == UPLOAD_ERR_OK) {
            $tmp_name = $files["tmp_name"][$key];

            if (move_uploaded_file($tmp_name, "$uploads_dir/$name")) {
                $toWork[] = "$uploads_dir/$name";
            }
        } else {
            echo "Файл $name - не загружен";
        }
    }
}


update:

Реализовал так - работает:
if (count($_FILES)) {
//  echo '<pre>'.print_r($_FILES, TRUE).'</pre>';

  

    $files = $_FILES['files'];

    $uploads_dir = dirname($_SERVER['SCRIPT_FILENAME']).'/subs/';
    foreach ($files["error"] as $key => $error) {
    

        $name = $files["name"][$key];
$valid_types =  array("ass", "srt", "sub", "ssa");  


$ext = substr($name, 1 + strrpos($name, ".")); 
if (!in_array($ext, $valid_types)) {
echo '<center><p class="btn btn-danger btn-lg">Error: Invalid file type.</p></center>';
} else 
        if ($error == UPLOAD_ERR_OK) {
            $tmp_name = $files["tmp_name"][$key];

            if (move_uploaded_file($tmp_name, "$uploads_dir/$name")) {
                $toWork[] = "$uploads_dir/$name";

            }
        } else {
            echo "Файл $name - не загружен";
        }
    }
}


может можно лучше?
  • Вопрос задан
  • 3353 просмотра
Пригласить эксперта
Ответы на вопрос 1
nazarpc
@nazarpc
Open Source enthusiast
Ключевые строки из указанного вами вопроса:
$allowedExts = array("jpg", "jpeg", "gif", "png"); 
$extension = end(explode(".", $_FILES["file"]["name"]));
...
    && in_array($extension, $allowedExts))
Ответ написан
Ваш ответ на вопрос

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

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