整天都陷入困境,我不确定问题是什么。我已经阅读了我能在论坛上找到的所有内容,这些内容让我更接近,但还没有完全找到。
这里发生了什么。我们的网站使用phpMailer。我们正试图允许申请人通过我们的联系表格上传2个文件。以下是代码示例。
<td><span class="csr-contact-field">Resume*</span></td>
<td>
<input type="file" name="resume[]" id="resume" value="<?php if(isset($Resume)) echo $Resume ?>" multiple />
<br />
<span class="csr-form-error">
<?php if (isset($errors['fileError'])) echo $errors['fileError']; ?>
</span>
</td>
<?php
if ($Page == "careers.php") {
$target_dir = "upload\\";
$allowedExtensions = array("pdf", "doc", "docx", "txt", "rtf");
$names = $_FILES["resume"]["name"];
$i = 0;
foreach($names as $name) {
echo "$name\n";
$extension = pathinfo($name, PATHINFO_EXTENSION);
$target_file = $target_dir . basename($name);
echo "What's here ---- $target_file\n";
if (in_array($extension, $allowedExtensions)) {
if ($_FILES["resume"]["error"][$i] > 0) {
$errors['fileError'] = "Return Code: " . $_FILES["fileError"]["error"] . "<br>";
}
else {
if (file_exists($target_file)) {
move_uploaded_file($_FILES["resume"]["tmp_name"][$i], $target_file);
}
else {
$errors['fileError']= "File Does Not Exist!";
}
$mail->AddAttachment($target_file);
$i++;
}
}
else {
$errors['fileError'] = "Please submit a valid file type (doc, docx, pdf, txt, rtf).";
}
}
}
?>
当我去附加文件时,我收到一个错误,告诉我该文件不存在,但即使我使用完整路径并通过打印出变量确认文件位置,它仍然会给我错误。
任何帮助都将一如既往地受到高度赞赏。
答案 0 :(得分:1)
看起来我使用以下代码更改了解了所有帮助
<?php
if ($Page == "careers.php") {
$target_dir = 'upload\\';
$allowedExtensions = array("pdf", "doc", "docx", "txt", "rtf");
$names = $_FILES["resume"]["name"];
$i = 0;
foreach($names as $name) {
$extension = pathinfo($name, PATHINFO_EXTENSION);
$target_file = $target_dir . basename($name);
if (in_array($extension, $allowedExtensions)) {
if ($_FILES["resume"]["error"][$i] > 0) {
$errors['fileError'] = "Return Code: " . $_FILES["fileError"]["error"] . "<br>";
}
else {
move_uploaded_file($_FILES["resume"]["tmp_name"][$i], $target_file);
if (file_exists($target_file)) {
$mail->AddAttachment($target_file);
}
else {
$errors['fileError']= "File Does Not Exist!";
}
}
}
else {
$errors['fileError'] = "Please submit a valid file type (doc, docx, pdf, txt, rtf).";
}
$i++;
}
}
?>
唯一的问题是文件一旦发送就会保留在我的上传目录中。有关处理的任何建议吗?
答案 1 :(得分:0)
你的逻辑不对。您正在检查目标文件是否存在,但它尚不存在,因为您将在下一行创建它。
最有可能的是:
if (file_exists($_FILES["resume"]["tmp_name"][$i]))
但即便这样也不是必需的,因为如果这个tmp_name字段被填充,那意味着PHP肯定有那里的文件。