использую в своих проектах
<?php
// upload.php //
if (!empty($_FILES['files']['name'][0])) {
$files = $_FILES['files'];
$uploaded = array();
$failed = array();
$allowed = array('txt', 'zip');
foreach ($files['name'] as $position => $file_name) {
$file_tmp = $files['tmp_name'][$position];
$file_size = $files['size'][$position];
$file_error = $files['error'][$position];
$file_ext = pathinfo($file_name, PATHINFO_EXTENSION);
if (in_array($file_ext, $allowed)) {
if ($file_error === 0) {
if ($file_size <= 2097152) {
$file_name_new = uniqid('', true) . '.' . $file_ext;
$file_descination = 'uploads/' . $file_name_new;
if (move_uploaded_file($file_tmp, $file_descination)) {
$uploaded[$position] = "[$file_name]: успешно загружен";
} else {
$failed[$position] = "[$file_name]: возникла ошибка при загрузке файла";
}
} else {
$failed[$position] = "[$file_name]: расширение файла превышает допустимые значения";
}
} else {
$failed[$position] = "[$file_name]: возникла ошибка при загрузке файла";
}
} else {
$failed[$position] = "Расширение файла [{$file_name}]: <b>{$file_ext}</b>";
}
}
if (!empty($uploaded)) {
print_r($uploaded);
}
if (!empty($failed)) {
print_r($failed);
}
}
?>
// index.php //
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html" />
<meta name="author" content="admin" />
<title>Мультизагрузка</title>
</head>
<body>
<form action="upload.php" method="POST" enctype="multipart/form-data">
<input type="file" name="files[]" multiple>
<input type="submit" value="Загрузить"/>
</form>
</body>
</html>