Javascript 使用输入类型=”将文件发送到电子邮件;文件";使用AJAX和PHP

Javascript 使用输入类型=”将文件发送到电子邮件;文件";使用AJAX和PHP,javascript,php,html,ajax,forms,Javascript,Php,Html,Ajax,Forms,我有一个简单的AJAX和PHP联系表单,我正在使用它向我的电子邮件地址发送消息。不过,现在我想上传文件并使用此表单发送它们。我使用了input type=“file”。。但是,上载的文件未被传递。例如,我通过尝试上传几个图像来测试这一点,文件以文本“C:\fakepath\bahamas.jpg”的形式发送。 我也在这里添加了我的代码,感谢您对我如何实现这一点的任何回应和见解:) 函数(id){ 返回文档.getElementById(id); } 函数submitForm(){ _(“myb

我有一个简单的AJAX和PHP联系表单,我正在使用它向我的电子邮件地址发送消息。不过,现在我想上传文件并使用此表单发送它们。我使用了input type=“file”。。但是,上载的文件未被传递。例如,我通过尝试上传几个图像来测试这一点,文件以文本“C:\fakepath\bahamas.jpg”的形式发送。 我也在这里添加了我的代码,感谢您对我如何实现这一点的任何回应和见解:)


函数(id){
返回文档.getElementById(id);
}
函数submitForm(){
_(“mybtn”).disabled=true;
_(“状态”).innerHTML='请稍候…';
var formdata=new formdata();
formdata.append(“n”,“n”).value);
formdata.append(“e”和“e”)值);
formdata.append(“p”,“p”).value);
formdata.append(“a”和“a”)值);
formdata.append(“w”,“w”).value);
formdata.append(“sp”和“sp”)值);
formdata.append(“up”)、u(“up”).value);
formdata.append(“m”,“m”).value);
var ajax=new-XMLHttpRequest();
open(“POST”、“contact.php”);
ajax.onreadystatechange=函数(){
if(ajax.readyState==4&&ajax.status==200){
if(ajax.responseText==“成功”){
_(“my_form”).innerHTML='Thanks'+Un”).value+
“,您的邮件已发送。”;
}否则{
_(“状态”).innerHTML=ajax.responseText;
_(“mybtn”).disabled=false;
}
}
}
发送(formdata);
}



图像上的Input.value将给出文本值,该值是一个伪路径加上文件名。伪造路径是出于安全原因。 尝试使用添加所有数据

 var formdata = new FormData(_("my_form"));
只是添加了下面的函数作为参考

 function _(id) {
    return document.getElementById(id);
}

可能重复或不使用文件输入的
属性您使用列表属性中的单个文件对象,在PHP中您不使用
$\u POST['up']
,您使用
$\u FILES['up']
@AdilLiaqat这两个问题仅说明如何使用jQuery。XMLHttpRequest也有类似的重复?或者是这个反应让我更喜欢谷歌。。在那里我找到了解决办法。感谢您的回复:)
<?php
if( isset($_POST['n']) && isset($_POST['e'])
&& isset($_POST['m']) ){
$n = $_POST['n'];
$e = $_POST['e'];
$p = $_POST['p'];
$a = $_POST['a'];
$w = $_POST['w'];
$sp = $_POST['sp'];
$up = $_POST['up'];
$m = nl2br($_POST['m']);
$to = "hello@emailaddress.com"; 
$from = $e;
$subject = 'SMS Intake Form Message';
$message = '<b>Name:</b> '.$n.' <br><b>Email:</b>
'.$e.'     <br><b>Phone:</b> '.$p.' 
<br><b>Address:</b>   '.$a.' <br><b>Website:</b>
'.$w.'    <br><b>Phone:</b> '.$sp.' <br>
<b>Files:</b>    '.$up.' <p>'.$m.'</p>';
$headers = "From: $from\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; 
charset=iso-8859-    1\n";
if( mail($to, $subject, $message, $headers) ){
    echo "success";
} else {
    echo "The server failed to send the message. 
Please try again later.";
}
}
?>
 var formdata = new FormData(_("my_form"));
 function _(id) {
    return document.getElementById(id);
}