2

嗨,我有一个文件上传字段,名称为“file1”,并且在 phpmailer 脚本中有代码:

if (isset($_FILES['file1']))
{
$file1_path = $_FILES['file1']['tmp_name'];
$file1_name = $_FILES['file1']['name'];
$file1_type = $_FILES['file1']['type'];
$file1_error = $_FILES['file1']['error'];
$mail->AddAttachment($file1_path);
}

并且由于某种原因,它像 php45we34 一样附加(每次差异,似乎它的临时名称路径,而不是实际文件)

有什么帮助吗?

4

3 回答 3

2

从您的文件名中删除空格!

Blue hills.jpg应该Blue_hills.jpg

$fileName = str_replace(' ', '_', $fileName);

于 2011-11-24T13:58:39.203 回答
1

我建议您在添加附件之前使用函数 move_uploaded_file。

这是将文件从临时位置移动到服务器某处的示例代码

$target_path = "uploads/";

$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo "The file ".  basename( $_FILES['uploadedfile']['name']). 
    " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}

之后 AddAttachment 应该可以正常工作。

$mail->AddAttachment(basename($target_path . $_FILES['uploadedfile']['name']));
于 2011-07-14T20:05:23.287 回答
1

你看到的就是应该发生的事情。您没有指定附件名称,因此 phpMailer 使用它附加的临时文件的名称。

如果您希望文件具有不同的名称,则必须指定它。接受的答案有效,因为它反过来 - 它更改文件名,以便文件具有所需的名称。

通常的处理方式是发出

$mail->AddAttachment($file1_path, $_FILES['file1']['name']);

覆盖附件名称。

于 2012-11-06T03:07:50.703 回答