Php错误显示,而访问输入类型=文件使用jquery/ajax方法

Php error showing while accessing input type = file using jquery/ajax method

本文关键字:文件 jquery 方法 ajax 类型 显示 错误 输入 访问 Php      更新时间:2023-09-26

我需要使用jquery/ajax访问输入类型=file,以便我可以将值/file传递给php页面。但是它显示了以下错误信息:

Notice: Undefined index: file in D:'software installed'xampp'htdocs'contact-management
'editContactDetails.php on line 16 

是否有任何问题在我下面的代码或有任何方式来访问它?

我的html代码

<form enctype="multipart/form-data">
<input type="file" name="file" id="file" class="file"/>
<input type="button" name="submit" value="Update Details" class="submit" id="UpdateDetails"/>
</form>

Jquery/Ajax代码:

$(document).ready(function() {
        $("#UpdateDetails").click(function() {                
         var fn = $('#family_name').val();
         var cdid = $('#cdid').val();
         var family_name = $('#family_name').val();
         var given_name = $('#given_name').val();
         var work_phone = $('#work_phone').val();
         var mobile_phone = $('#mobile_phone').val();
         var email = $('#email').val();
         var email_private = $('#email_private').val();
         var file_des_1 = $('#file_des_1').val();
         var file = $('#file').val(); 
          $.ajax({    //create an ajax request to load_page.php
                type: "POST",
                url: "editContactDetails.php",             
                data : {
                    'cdid' : cdid,                  
                    'family_name' : fn,                 
                    'given_name' : given_name, 
                    'work_phone' : work_phone, 
                    'mobile_phone' : mobile_phone, 
                    'email' : email, 
                    'email_private' : email_private, 
                    'file_des_1' : file_des_1,
                    'file' : file
                    },
                dataType: "html",   //expect html to be returned                
                success: function(response){                    
                    $("#successUpdate").html(response); 
                    //alert(response);
                }
            });
        });
    });

Php文件代码

//uoload first docuement with description...
$file_des_1 = $_POST['file_des_1']; 
$did = mt_rand(100000, 999999);     
$file =  $_FILES["file"]["name"];
$type =  $_FILES["file"]["type"];
$size =  ($_FILES["file"]["size"] / 1024);
$temp =  $_FILES["file"]["tmp_name"];       
//require file formate 
$allowedExts = array("doc", "docx", "xls", "pdf");  
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);    
//rename uploaded docuement
echo $doc_1 = $did.".".$extension;  
$contacts_doc_directory = "contact_directory";

试试这个文件上传

<form enctype="multipart/form-data" >
<input type="file" name="file" id="file" class="file"/>
<input type="button" name="submit" value="Update Details" class="submit" id="UpdateDetails"/>
</form>

<script src="http://code.jquery.com/jquery-latest.min.js"
        type="text/javascript"></script>

<script>
$(document).ready(function() {
        $("#UpdateDetails").click(function() {                
 var formData = new FormData($('form')[0]);
 alert(formData);
    $.ajax({
        url: 'editContactDetails.php',  //Server script to process data
        type: 'POST',
        xhr: function() {  // Custom XMLHttpRequest
            var myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ // Check if upload property exists
          //      myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // For handling the progress of the upload
            }
            return myXhr;
        },
        //Ajax events
      //  beforeSend: beforeSendHandler,
       // success: completeHandler,
        //error: errorHandler,
        // Form data
        data: formData,
        //Options to tell jQuery not to process data or worry about content-type.
        cache: false,
        contentType: false,
        processData: false
    });//ajax
    });
    });
</script>

在开始处理传递给php脚本的数据之前,您应该检查这些数据是否实际传递给脚本…你可以使用isset()empty()来检查一个值是否是你作为参数传递的一组变量。

所以你的脚本变成:

if (isset($_POST['file_des_1']) && !empty($_POST['file_des_1']) && isset( $_FILES["file"] ) && !empty( $_FILES["file"]["name"] )) {
    //uoload first docuement with description...
    $file_des_1 = $_POST['file_des_1']; 
    $did = mt_rand(100000, 999999);     
    $file =  $_FILES["file"]["name"];
    $type =  $_FILES["file"]["type"];
    $size =  ($_FILES["file"]["size"] / 1024);
    $temp =  $_FILES["file"]["tmp_name"];       
    //require file formate 
    $allowedExts = array("doc", "docx", "xls", "pdf");  
    $temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);    
    //rename uploaded docuement
    echo $doc_1 = $did.".".$extension;  
    $contacts_doc_directory = "contact_directory";
}