@goldwizard13

Оптимизация кода при загрузке нескольких файлов?

Подскажите как оптимизовать следующий г...код
Форма загрузки
< form method="post" enctype="multipart/form-data">
< p>Login: < input type="file" name="userfile_1" /> < /p>
< p>Name: < input type="file" name="userfile_2" /> < /p>
< p>Surname: < input type="file" name="userfile_3" /> < /p>
< p>< /p>
< /form>

//переименовую в нужные названия
$namefile_1 = "a4".".txt";
$namefile_2 = "a4_1".".txt";
$namefile_3 = "a4_2".".txt";

$uploaddir = '/stelsuser/uploads/'; //папка куда загружать
$uploadfile_1 = $uploaddir . $namefile_1;
$uploadfile_2 = $uploaddir . $namefile_2;
$uploadfile_3 = $uploaddir . $namefile_3;

//Ставим в нужное место с нужными именами
if (move_uploaded_file($_FILES['userfile_1']['tmp_name'], $uploadfile_1))
{$userfileecho = '1- успешно';}

if (move_uploaded_file($_FILES['userfile_2']['tmp_name'], $uploadfile_2))
{ $userfileecho = '2- успешно';}

if (move_uploaded_file($_FILES['userfile_3']['tmp_name'], $uploadfile_3))
{ $userfileecho = '3- успешно';}
  • Вопрос задан
  • 444 просмотра
Решения вопроса 2
@imhuman
$uploaddir = '/stelsuser/uploads/'; //папка куда загружать
foreach($_FILES as $k=>$v){
    if(move_uploaded_file($v['tmp_name'],$uploaddir.uniqid('file_', true).".txt")) 
        $userfileecho. = $k.' - успешно';
}
echo $userfileecho;


Очевидно так, если непринципиально название файлов, если важно, то небольшие изменения
Ответ написан
abler98
@abler98
Software Engineer
<?php

define('DS', DIRECTORY_SEPARATOR);

$dir = 'uploads';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $result = [];
    if (isset($_FILES['files']) && $files = $_FILES['files']) {
        for ($i = 0; $i <= count($files); ++$i) {
            if (!empty($files['tmp_name'][$i])) {
                $filename = sprintf('a4_%d.txt', $i);
                $path = $dir . DS . $filename;
                $result[$i] = [$filename, move_uploaded_file($files['tmp_name'][$i], $path)];
            }
        }
    }
    array_walk($result, function (&$item, $index) {
        $item = '<p>' . ($index + 1) . ' - ' . $item[0] . ' - ' . ($item[1] ? 'Успешно' : 'Ошибка') . '</p>';
    });
    echo '<div>' . implode(PHP_EOL, $result) . '</div>';
    exit;
}

?>

<form method="POST" enctype="multipart/form-data">
    <p>File #1: <input type="file" name="files[]"></p>
    <p>File #2: <input type="file" name="files[]"></p>
    <p>File #3: <input type="file" name="files[]"></p>
    <p>File #4: <input type="file" name="files[]"></p>
    <p>File #5: <input type="file" name="files[]"></p>
    <p>File #6: <input type="file" name="files[]"></p>
    <button type="submit">Отправить</button>
</form>
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Как минимум - сложить все в цикл, избавившись от filename_n
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы