gpt4 book ai didi

phpMailer附件

转载 作者:行者123 更新时间:2023-12-04 14:45:49 24 4
gpt4 key购买 nike

在将文件上传到我的服务器后,我使用它来将文件附加到邮件中:

for ($i = 0; $i <= 2; $i++)
{
$mail->AddAttachment($locatie.$_FILES['uploaded'.$i]['name'], $_FILES['uploaded'.$i]['name']);
}

添加附件是可选的,但是当没有文件上传时会报错:Could not access file

如何防止显示错误?

最佳答案

先看这里如何处理文件上传:

Handling file uploads

您需要引用临时文件名。这是获取实际文件名所必需的,而不仅仅是文件名。

$_FILES['userfile']['tmp_name']

因此访问 $_FILES['userfile']['name'] 获取附件的书面文件名和 $_FILES['userfile']['tmp_name'] 指定上传的实际文件(数据)。

粗略地放入您的代码中,incl. a validation你也应该验证它实际上是一个文件上传:

for ($i = 0; $i <= 2; $i++)
{
# ignore file that have not been uploaded
if (empty($_FILES['uploaded'.$i])) continue;

# get the data of the file
$fileName = $_FILES['uploaded'.$i]['name'];
$filePath = $_FILES['uploaded'.$i]['tmpname'];

# add only if the file is an upload
is_uploaded_file($filePath)
&& $mail->AddAttachment($filePath, $fileName)
;
}

忠告

您的代码混合了两个作业。这使您难以调试和改进 - 以及处理文件/系统问题和安全性等问题。

我建议您采用一种不同的方法:一个接一个地执行。在您的情况下,1.) 处理文件上传并收集您需要的数据,2.) 添加这些附件。

您可以通过查看 PHP 手册来改进第一部分。如果你想支持多文件上传,建议你以页面Uploading multiple files给出的建议为导向。 .然后处理文件上传并形成一个数组,每个条目包含客户端计算机上的文件名和服务器系统上的路径。

// see PHP Manual for multi file uploads, this is based on it
$validAttachments = array();
foreach($_FILES['userfile']['name'] as $index => $fileName)
{
$filePath = $_FILES['userfile']['tmp_name'][$index];
if(is_uploaded_file($filePath))
{
$attachment = new stdClass;
$attachment->fileName = $fileName;
$attachment->filePath = $filePath;
$validAttachments[] = $attachment;
}
}

如果该部分已经存在错误,您就知道它与文件上传过程有关。这是未经测试的代码,因此只是说明一个方向。

在第二步中,您可以遍历这样的数组并添加附件:

foreach($validAttachments as $attachment)
{
$mail->AddAttachment($attachment->filePath, $attachment->fileName);
}

然后您可以更好地检查不同部分中的错误,而不会将一个问题与另一个问题混在一起。

关于phpMailer附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6322610/

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