2012-06-07 3 views
1

파일을 업로드하고 라이브 처리 진행 상황을 보여줄 수있는 사이트를 만들고 싶습니다. 클라이언트는 구분 된 파일을 업로드합니다. 업로드되면 데이터의 헤더/열을 확인합니다. 이것이 주어진 템플릿을 따른다면 나는 한 번에 하나의 라인을 처리 할 것이고, 이런 일이 발생하면 라이브 피드를 사용자에게 돌려주고 싶습니다. 나는 PHP가 요청을 받았을 때 실행되었다는 것을 알고 있으므로 접근 방식이 내 목표를 달성하기 위해 아약스를 필요로한다고 생각한다. 어떻게 이런 일을하는지. 모든 의사 코드, 예제 또는 자습서는 크게 감사하겠습니다.PHP와 Ajax를 사용하여 파일 업로드 및 처리

답변

1

저는 과거와 비슷한 것을했습니다. 당신이해야 할 일은 파일 처리를 시작하는 것입니다. 설정된 시간 간격 (예 : 초)이 지난 후 ajax 호출을 사용하여 서버를 폴링하여 파일 처리 진행률을 확인할 수 있습니다.

그런데 진행률 표시 줄에는 jqueryUI progressbar을, 업 로더에는 uploadify을 권하고 싶습니다.

자바 스크립트 :

setTimeout("UpdateProgressBar();", 1000); 

$.ajax({ 
    type: "POST", 
    async: true, 
    data: // params go here 
    url: // path to web method 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (result) { 
     // Do stuff when file is finished processing 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     if (errorThrown != null) 
      alert(textStatus + " : " + errorThrown); 
    } 
}); 

function UpdateProgressBar() { 
    $.ajax({ 
     type: "POST", 
     async: true, 
     data: // my params go here 
     url: // path to web method 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (result) { 
      var totalRecords = result.d.TotalRecords; 
      var recordsProcessed = result.d.RecordsProcessed; 
      var percentProcessed = pagesProcessed/totalRecords; 

      $('#div_ProgressBar').progressbar("value", percentProcessed); 

      if (recordsProcessed < totalRecords) 
       setTimeout("UpdateProgressBar();", 800); 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      if (errorThrown != null) 
       alert(textStatus + " : " + errorThrown); 
     } 
    }); 
+0

이 내가 찾던 무엇 신난다! –

+0

도움이 된다니 기쁘다. 그 대답을 받아들이는 것을 잊지 마라. :) –

+0

미안 해요. 나는 당신의 대본에 대해 이해하지 못합니다. 두 함수의 "data"및 "url"은 같거나 다를 수 있습니다. –

관련 문제