gpt4 book ai didi

php - 在上传文件之前用 phpmailer 发送文件?

转载 作者:行者123 更新时间:2023-11-28 01:40:44 26 4
gpt4 key购买 nike

我在使用 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);
}

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

$count = count($_FILES['file']['tmp_name']);
echo $count;

它返回 0。我知道 $_FILES 是空的,但我不知道其中的原因。我需要缓冲文件或类似的东西吗?

编辑:这是我的 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>

最佳答案

我的问题的解决方案是基于Synchro的思路,先上传文件再发送邮件。

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

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

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

重要的是执行这个小步骤以到达您稍后要在 php 中上传的每个文件。

第二步是遍历所有文件并将它们存储在您的服务器上。我就是这样做的:

foreach ($_FILES["file"]["error"] as $key => $error){

if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["file"]["tmp_name"][$key];
$name = $_FILES["file"]["name"][$key];

move_uploaded_file($tmp_name," server/data/$name"}

下一步我检查文件是否上传成功,如果 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;}

谢谢大家的帮助!

关于php - 在上传文件之前用 phpmailer 发送文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26236259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com