首页 > 解决方案 > 具有相同名称属性的 2 个文件上传输入的表单

问题描述

我有一个带有 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 代码会更好吗?

标签: phphtmlfile-uploadphpmailer

解决方案


在您的 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
}

推荐阅读