Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在上载文件之前,是否使用phpmailer发送文件?_Php_Html_Attachment_Phpmailer - Fatal编程技术网

在上载文件之前,是否使用phpmailer发送文件?

在上载文件之前,是否使用phpmailer发送文件?,php,html,attachment,phpmailer,Php,Html,Attachment,Phpmailer,我无法通过phpmailer脚本发送带有附件的电子邮件。如果我想在邮件中添加一个文件,我有一个工作代码。但是当涉及到多个文件时,看起来它们甚至没有上传 单个文件的我的代码: if (isset($_FILES['file']) && $_FILES['file']['error'] == UPLOAD_ERR_OK) { $mail->AddAttachment($_FILES['file']['tmp_name'], $_FILE

我无法通过phpmailer脚本发送带有附件的电子邮件。如果我想在邮件中添加一个文件,我有一个工作代码。但是当涉及到多个文件时,看起来它们甚至没有上传

单个文件的我的代码:

if (isset($_FILES['file']) &&
$_FILES['file']['error'] == UPLOAD_ERR_OK)
{
$mail->AddAttachment($_FILES['file']['tmp_name'],
                     $_FILES['file']['name']);

            if(!$mail->Send())
          {
           header("Location: " . $returnErrorPage);
          }
          else
          {
             header("Location: " . $returnHomePage);
          }             
}

我尝试了一些代码,这些代码应该循环遍历$\u文件中的所有文件,但没有成功。然后我测试了以下代码:

$count = count($_FILES['file']['tmp_name']);
echo $count;
它返回0。我知道$\u文件是空的,但我不知道原因。我需要缓冲文件或类似的东西吗

编辑: 以下是将文件和其他数据发送到脚本的html代码:

<form id="form_907007" class="appnitro" method="post" action="server/phpmailer.php"       
 enctype="multipart/form-data">
<p>Choose data (txt, html etc.):<br>
<input name="file" type="file" size="50" maxlength="100000" multiple>
</p>
</form>

选择数据(txt、html等):


我的问题的解决方案基于Synchro的想法,先上传文件,然后发送电子邮件

在我的html代码中,我必须更改这一行:

<input name="file" type="file" size="50" maxlength="100000" multiple>

<input name="file[]" type="file" size="50" maxlength="100000" multiple>
在下一步中,我检查文件是否上传成功,如果return=TRUE,我将其作为附件添加到邮件中:

if(move_uploaded_file($tmp_name,"server/data/$name" ))
            {
                $mail->AddAttachment("server/data/$name");
            }
if($mail->Send()){

    foreach ($_FILES["file"]["error"] as $key => $error)
    {
    $name = $_FILES["file"]["name"][$key];
    unlink("$name");
    }

header("Location: " . $returnPage);
exit;}
如果一切顺利,我可以在发送邮件后删除文件:

if(move_uploaded_file($tmp_name,"server/data/$name" ))
            {
                $mail->AddAttachment("server/data/$name");
            }
if($mail->Send()){

    foreach ($_FILES["file"]["error"] as $key => $error)
    {
    $name = $_FILES["file"]["name"][$key];
    unlink("$name");
    }

header("Location: " . $returnPage);
exit;}

谢谢你的帮助

日志中有错误吗?如何设置或填充$\u FILES['file']数组项?代码在哪里?你验证过它是否真的被设置好了吗?我已经添加了我的html代码,其余的都是自动读取的,特别是
移动上传的文件
-首先整理你的上传,然后再担心邮寄它们。如果你从if语句中删除$上传的文件['file']['error']==上传错误,OK会发生什么?