Форма с 2 входами для загрузки файлов с одинаковым атрибутом имени - PullRequest
0 голосов
/ 06 октября 2019

У меня есть форма с 2 входами с одинаковым атрибутом имени:

<form enctype="multipart/form-data" method="POST">
    <input type="file" name="file_upload" required="required" aria-required="true">
    <input type="file" name="file_upload" required="required" aria-required="true">
</form>

До того, как у меня был только один вход для загрузки файла, с помощью PHP я загружаю этот файл в папку temp и присоединяю его кэлектронная почта, используя phpMailer:

if (array_key_exists('file_upload', $_FILES)) {
    $uploadfile = tempnam(sys_get_temp_dir(), hash('sha256', $_FILES['file_upload']['name']));
    if (move_uploaded_file($_FILES['file_upload']['tmp_name'], $uploadfile)) {
        $mail->addAttachment($uploadfile, $_FILES['file_upload']['name']);
    } else{
        echo 'Failed!';
        exit;
    }
}

Как сделать то же самое для 2 файловых вводов?

Требуются оба файла.

Было бы лучше использовать другое имя для одного из них и повторить тот же код PHP?

1 Ответ

1 голос
/ 06 октября 2019

В вашем HTML переименуйте их как img1 и img2 (или вы можете изменить этот код).

$uploadStatus = 1;
$uploadedFile = '';
if (!empty($_FILES["img1"]["name"]))
{
    $fileName = basename($_FILES["img1"]["name"]);
    $filenamewithoutextension = strtolower(pathinfo($fileName, PATHINFO_FILENAME));
    $fileType = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));

    $filename_to_store = $filenamewithoutextension. '_' .uniqid(). '.' .$fileType;

    $allowTypes = array(
        'jpg',
        'png',
        'jpeg'
    );
    if (in_array($fileType, $allowTypes))
    {
        if (move_uploaded_file($_FILES["img1"]["tmp_name"], $uploadDir.$filename_to_store))
        {
            $uploadedFile = $filename_to_store;
        }
        else
        {
            $uploadStatus = 0;
        }
    }
    else
    {
        $uploadStatus = 0;
    }
}

$uploadStatus1 = 1;
$uploadedFile1 = '';
if (!empty($_FILES["img2"]["name"]))
{
    $fileName = basename($_FILES["img2"]["name"]);
    $filenamewithoutextension = strtolower(pathinfo($fileName, PATHINFO_FILENAME));
    $fileType = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));

    $filename_to_store = $filenamewithoutextension. '_' .uniqid(). '.' .$fileType;

    $allowTypes = array(
        'jpg',
        'png',
        'jpeg'
    );
    if (in_array($fileType, $allowTypes))
    {
        if (move_uploaded_file($_FILES["img2"]["tmp_name"], $uploadDir.$filename_to_store))
        {
            $uploadedFile1 = $filename_to_store;
        }
        else
        {
            $uploadStatus1 = 0;
        }
    }
    else
    {
        $uploadStatus1 = 0;
    }
}

if($uploadStatus==1 && $uploadStatus1==1)
{
    //send mail
}
...