【问题标题】:Uploading a file and attaching it to an e-mail using formData() [duplicate]使用 formData() 上传文件并将其附加到电子邮件 [重复]
【发布时间】:2012-12-21 01:07:59
【问题描述】:

可能重复:
submit success but upload not work at combine form

我正在使用标题“仅提交文件”下的here 中的代码。代码真的很简单,很小,但是当我console.log“文件”时,它没有位置,webkitrelativepath是“”,我可以在提交时看到文件名,大小等。我需要将其发布到我的 feedback.php 文件中并将其附加到电子邮件中,但我不知道如何将文件从 formData 中取出并将其上传到我的上传文件夹中,这样我就可以- 邮寄...

谢谢。

编辑:

我目前使用的是什么代码:

var fileInput = document.getElementById('file-upload-field');
var file = fileInput.files[0];
var formData = new FormData();
formData.append('file', file);
console.log(file);

$.ajax({
  url: baseUrl + "feedback.php",
  data: file,
  cache: false,
  contentType: false,
  processData: false,
  type: 'POST',
  success: function(file){
    alert(file);
  }
});

在我的feedback.php中

  foreach($_FILES as $file){
    $target_path = "uploads/";
    $target_path = $target_path .basename($file['name']);



if(move_uploaded_file($file['tmp_name'], $target_path)) {
echo "the file ".basename($file['name'])." has been uploaded";
}
else {
 echo "there was an error";
}
$mail->AddAttachment($target_path);

}

这不会在任何地方上传或附加任何文件...

【问题讨论】:

  • 这篇文章是关于什么的:blog.new-bamboo.co.uk/2012/01/10/…
  • 好的,更换我的 cmets,秒。没有注意到您明确使用了 File API。
  • 因此,以这种方式上传的文件不会显示在 $_FILES 中。您需要阅读stdin 或查看$HTTP_RAW_POST_DATA(如果已定义)。这意味着您也不会获得 MIME 类型或原始用户文件名。我敦促您为此任务使用第三方上传小部件。
  • @SEROK:请联系该教程的作者并索取 PHP 示例代码。我们无法为任何在线教程提供支持,如果您遇到此类教程的问题,请先联系原作者。

标签: php jquery post multipartform-data


【解决方案1】:

只需上传文件

move_uploaded_file(string $filename , string $destination );

然后将邮件作为附件发送如下:

require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->Host = 'smtp_host';      
$mail->Port = 'smtp_port';
$mail->SMTPAuth = true;         
$mail->Username = 'smtp_user';  // SMTP username
$mail->Password = 'smtp_pass';  // SMTP password
$mail->From = "from@abc.ocm";
$mail->FromName = "fromName";
$mail->AddAddress($email);
$mail->Subject = "Your subject line";
$mail->AddAttachment($source, $fileName);
$mail->Body = "Your Message";

// Send the email.
if(!$mail->Send())
    $message = "Displya some error.";

}

【讨论】:

    猜你喜欢
    • 2012-10-15
    • 2015-05-29
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 2019-01-22
    • 2010-12-07
    • 2017-08-21
    • 2012-12-14
    相关资源
    最近更新 更多