2013-10-21 9 views
0

파일을 업로드하는 중에 PHP에서 정의되지 않은 파일이 잘못되었습니다. 내가 위의 회선을 사용하는 경우 내 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 

$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); 
?> 

는이 정의되지 않은 인덱스가 '실행 $files=$_FILES['file']['name']; 그것은 정의되지 않은 인덱스 파일을 말한다 후에 않을를 file'.But 말한다.

+1

전체 코드, 특별히 PHP 부분을 게시하시기 바랍니다. – vbrmnd

+0

완전한 코드를 추가하십시오 ... 광고 참조 http://www.w3schools.com/php/php_file_upload.asp – HackerGK

+1

html 부분도 게시하십시오. –

답변

0

파일 업로드 양식의 속성이 enctype = "multipart/form-data"인지 확인하십시오. 그렇지 않으면 파일 업로드가 작동하지 않습니다.

아쉽게도 안타깝게도 보안상의 이유로 js는 파일 데이터에 액세스 할 수 없으므로 serialize 기능을 통해 게시 할 수 없습니다. 양식의 다른 부분을 확인하고 (당신이 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 또는 플래시 대체 플러그인을 찾아해야합니다 파일을 업로드합니다. 여기에 하나 정말 좋은 : 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 } 


        }); 

FormData 대신 serialize() 사용하는 것이 내가 당신을 추천이

<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의 장점은 content-type을 지정하여 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 –

관련 문제