PHP 使用 onchange 将文件上传到 Ajax


PHP upload file to Ajax using onchange

function chkFile(file1) {
    var file = file1.files[0];
    var formData = new FormData();
    formData.append('formData', file);
    $.ajax({
    type: "POST",
    url: "chkFileType.php",    
    contentType: false,
    processData: false,
    data: formData,
    success: function (data) {
      alert(data);
      }
  });
}

<form action="" method="post" name="myForm" id="myForm" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Upload Files
<input type="file" name="uploadFile" id="uploadFile" onChange="chkFile(this)"/>
<input type="submit" name="submitbutt" value="Checkout">

chk文件类型.php

<?php 
    print_r($_FILE)
?>

我想创建一个表单,当用户上传文件时,它将在提交整个表单之前对上传的文件进行检查。我在上传文件时使用onChange,然后将formData值传递给 Ajax 以调用我的chkFileType.php进行检查并提醒响应。

该函数正在运行,没有任何错误,但没有来自alert(data)的响应;

我知道我做错了什么,但不知道从哪个方向走。我的做法是否正确?

一切看起来都很好。你以正确的方式做了。但是要从 ajax 调用中获得任何响应,您必须在 chkFileType.php 中打印所需的内容。

喜欢

if($ext =="jpg" || $ext == "png"){
     echo "Image"; // data in alert will alert as Image
} else if(check for txt file){
     echo "Text File"; //  data in alert will alert as Text File
} else if(chck for pdf) {
     echo "Pdf";// data in alert will alert as Pdf  
}

编辑更改此内容

var formData = new FormData( $("#formID")[0] );

希望你明白我想说什么。

我认为问题在于您编写了"类型"而不是"方法","POST"是方法而不是类型。