2013-10-21 100 views
0

我正在上傳一個文件時,在我的PHP中出現未定義的文件。我想上傳文件我的文件

function click_submit_form() { 
    var action = "jb_data_charity_submit.php"; 
    // alert("I step"+$('#id_frm_per_details, #id_frm_acc_details , #id_frm_charity_details').serialize()); 
    $.ajax({ 
     url: 'jb_data_charity_submit.php', 
     type: 'POST', 
     data: $('#id_frm_charity_details').serialize(), 
     success: function (data_in) { 
      //alert(data_in); 
      if (data_in != null && !isEmpty(data_in) && (data_in).indexOf('VALIDATION_ERROR') != -1) { 
       var value = data_in.substr(data_in.indexOf('VALIDATION_ERROR'), data_in.indexOf('|#END#')); 
       var array_str = value.split('|') 

       //alert(array_str[0]); 
       //alert(array_str[1]); 
       //alert(array_str[2]); 

       var id_val = "#id_" + array_str[1].trim(); 
       show_error(id_val, array_str[2]) 
      } else { 
       window.location.replace('jb_charity_regn_confirm.html'); 
       alert(data_in); 
       // alert("FINAL"); 
      } 
     } 
    }); 
    return false; 
} 

<form class='form-vertical' id='id_frm_charity_details' name='frm_charity_details' action='jb_data_harity_submit.php' enctype='multipart/form-data'> 
    <input id="id_file" name="file" class="input-file" type="file"> <a onclick='click_submit_form();' href="#" class="btn btn-info btn-custom8 btn-large "><i class=" icon-play"></i> Submit Application</a> 
</form> 

在我的PHP

<?php 

$files = $_FILES['file']['name']; 
$files_tmp = $_FILES['file']['tmp_name']; 
$copy = copy($files_tmp, $files); 
//echo $_POST['file']; 
move_uploaded_file($files_tmp, "C:\wamp32\www\jb_from_live\src\uploaded_files/" . $files); 
?> 

如果我使用上述行,然後它說未定義指數「file'.But執行不會$files=$_FILES['file']['name']; 它說未定義的索引文件之後。

+1

請發佈完整的代碼,PHP的一部分特別。 – vbrmnd

+0

請添加完整代碼... ad參考http://www.w3schools.com/php/php_file_upload.asp – HackerGK

+1

發佈您的html部分以及.. –

回答

0

確保您的文件上傳表單具有屬性enctype =「multipart/form-data」,否則文件上傳不起作用。

您不能通過ajax上傳文件,只是不幸的是,出於安全原因,js無法訪問文件數據,因此無法通過表單序列化函數發佈。

如果你想驗證表單的其他部分,然後提交。如果你想使用HTML5這個答案,它利用FORMDATA有天啊,你可以這樣寫

function submit(){ 
    var valid = true; 
    //TODO: check validation on form, set valid to false if incorrect 
    if(valid) 
     document.forms[0].submit(); 
    return false; 
} 

函數()函數:

How can I upload files asynchronously?

否則,如果你上傳的文件異步你就必須尋找一個JSP或Flash後備插件。 這裏是一個非常不錯的一個: http://blueimp.github.io/jQuery-File-Upload/

+0

我用那個朋友 – prakash

+0

更新了我的答案 – Will

0

發送圖像格式

$('#form').submit(function() { 

    var img=$('#image').val(); 

    var forms=($(this).serialize()); 


      $.ajax({ 
      type:"POST",   
      url: "do.php?do=upload", 
      data:forms+'&r='+encodeURIComponent(img), 
      success: function(result){ //your code } 


        }); 

在你的代碼試試這個像這樣

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

    var action = "jb_data_charity_submit.php"; 
       // alert("I step"+$('#id_frm_per_details, #id_frm_acc_details , #id_frm_charity_details').serialize()); 
    var img=$('#id_file').val(); 

    var forms=($('#id_frm_charity_details').serialize()); 

       $.ajax({ 
        url: 'jb_data_charity_submit.php', 
        type: 'POST', 
        data:forms+'&r='+encodeURIComponent(img), 
        // data: $('#id_frm_charity_details').serialize(), 
        success: function(data_in) { 
         //alert(data_in); 
         if (data_in != null && !isEmpty(data_in) && (data_in).indexOf('VALIDATION_ERROR') != -1) { 


          var value = data_in.substr(data_in.indexOf('VALIDATION_ERROR'), data_in.indexOf('|#END#')); 
          var array_str = value.split('|') 


          //alert(array_str[0]); 
          //alert(array_str[1]); 
          //alert(array_str[2]); 

          var id_val = "#id_" + array_str[1].trim(); 
          show_error(id_val, array_str[2]) 
         } else { 



          window.location.replace('jb_charity_regn_confirm.html'); 
          alert(data_in); 
          // alert("FINAL"); 
         } 
        } 
       }); 


       return false; 


      } 
      </script> 
<form class='form-vertical' id='id_frm_charity_details' name='frm_charity_details' action='jb_data_harity_submit.php' enctype='multipart/form-data' > 

<input id="id_file" name="file" class="input-file" type="file"> 
<a onclick='click_submit_form();' href="#" class="btn btn-info btn-custom8 btn-large "><i class=" icon-play"></i> Submit Application</a> 
</form> 
+0

謝謝你,但它顯示了同樣的錯誤...我必須改變任何在我的PHP文件? – prakash

+0

你在js或php中有什麼未定義的? –

+0

我從php – prakash

0

我建議你使用FormData,而不是serialize()。使用formData的優點是,您還可以通過指定其內容類型來上傳pdf,xml,JSON文件。

對於如:

var fData = new FormData(); 
fData.append("XML", new Blob([ xml ], { type: "text/xml" }); 
fData.append("JSON", new Blob([ JSON.stringify(json) ], { type: "application/json" })); 
fData.append("PDF", file); 
+0

得到它你能告訴我如何在你的代碼中使用你的答案嗎?你可以幫我嗎? – prakash

+0

選中此鏈接。並按照該步驟進行:http://stackoverflow.com/questions/5941393/how-to-pass-input-type-file-data-in-ajax-call –