2015-01-22 7 views
0

다음 코드를 사용하여 내 서버에 CSV를 업로드하고 처리합니다. 간혹 (매우 임의적으로) 업로드 된 파일에는 원래 파일에 포함 된 행 수의 절반 만 들어 있습니다 (원본 파일에는 450 행이 포함되어 있지만 일부 업로드에는 ~ 200 행만 포함됨). move_file_upload()가 true를 반환하면 CSV가 처리되기 전에이 상황이 발생합니다. 어떤 생각이나 생각? 예, 사용 권한이 모두 정확합니다.PHP : move_uploaded_file 부분 업로드 중

// PHP: 
public function import() { 
    if ($this->request->is('post')) { 
     $destination = "./uploaded_csvs/reports/" . time() . "_" . $this->request->data['Reports']['file']['name']; 

     // Copy the report to the server 
     if(move_uploaded_file($this->request->data['Reports']['file']['tmp_name'], $destination)) { 
      // Success - Process CSV 
     } else { 
      // Error 
     } 
    } 
} 

// HTML: 
<form accept-charset="utf-8" method="post" enctype="multipart/form-data" id="ReportsForm" action="/Reports/import"> 
    <input type="file" id="ReportFile" size="7" value="" name="data[Report][file]"> 
    <input type="image" src="/img/buttons/save.png"> 
</form> 
+0

오류가 발생했는지 확인하십시오. –

+0

아니요, 오류가 없습니다. 또한, 업로드중인 파일은 총 54kb이므로 크기가 문제가되지 않습니다. – execv

+0

move_uploaded_file이 true를 반환하면 업로드에 아무런 문제가 없었습니다. 내가 생각할 수있는 유일한 가능성은 저장 버튼을 클릭 할 때 로컬 파일이 다른 프로세스에 의해 쓰여지는 것의 절반 정도 였다는 것입니다. – Phil

답변

0

move_upload_file는 파일을 절단되지 않습니다. 업로드 된 모든 내용을 이동합니다. 파일이 부족하다면 서버가받은 것입니다.

if ($_FILES['file']['error'] !== UPLOAD_ERR_OK) { 
    die('Upload failed with error code #' . $_FILES['file']['error']); 
} 

성공을 가정하지 마십시오 : 당신은 항상 업로드로해야

매우 FIRST 점은 actually succeeded가 있는지 확인합니다. 항상 실패를 확인하고 즐거운 놀라움으로 성공을 대하십시오.

관련 문제