2010-08-19 7 views
1

안녕하세요 저는 stackoverflow 및 codeigniter에 대해 매우 익숙합니다.이 질문에 대한 규칙이나 예의를 위반하면 사과드립니다. 관련 질문을 검색했지만 관련이없는 내용을 보지 못했습니다. 내 질문에 직접).codeigniter를 사용하여 PDF 파일 업로드

나는 PDF 파일을 업로드하기 위해 노력하고있어, 나는 다음과 같은 코드를 사용하고 있습니다 (CodeIgniter의 버전 1.7.2) :

function test(){ 
     $this->load->library('upload'); 
     $config['upload_path'] = './assets/certificates/'; 
     $config['allowed_types'] = 'pdf'; 
     $config['max_size'] = '1000000'; 
     $config['file_name'] = "test"; 

     $this->upload->initialize($config); 
     $certificateflag = $this->upload->do_upload("certificate");  
     if ($this->upload->do_upload("certificate")) 
      error_reporting(E_ALL); 
     else{ 
      echo "<pre>"; Print_r($this->upload->data()); echo "</pre>"; 
     } 
} 

내가 오류를 얻을하지 않습니다, 그리고 그것은 그 나타납니다 파일은 업로드되지만 디렉토리에 나타나지 않으며 서버의 어느 위치에서도 찾을 수 없습니다. 위의 결과는 파일이 있어야하는 경로를 알려주지 만 거기에는 존재하지 않습니다.

동일한 디렉토리에 업로드하여 잘 작동하는 jpg 파일의 코드 블록을 다른 부분에서 사용하고 있습니다.

도움/아이디어를 크게 높이 평가합니다.

+0

CI에 대한 단서가 없습니다. 어쨌든 error_reporting() before -> do_upload()를 넣어야합니다. 이것이 아무 것도 밝혀 내지 않으면, print 서술문을 -> upload-> do_upload로 던져주십시오. 또는 CI가 초기화되고 설정 해제되기 전에 print_r ($ _ FILES)을 한 걸음 뒤로 물러서십시오. "allowed_types"는 엉뚱한 것처럼 보이고 바닐라 앱/oct MIME 유형 또는 기본 이름 파일에서 실패 할 수 있습니다. – mario

답변

1

처음에는 두 번 do_upload 메서드를 호출하는 것을 보았으므로 그 중 하나를 삭제해야한다고 생각합니다. do_upload 호출 후 $ this-> upload-> display_errors() 메소드를 호출하면 오류가 발생할 수 있습니다. 필드 이름을 다시 검사하여 "인증서"여야하고 './assets/certificates/'의 chmod를 확인하십시오. 777이어야합니다. 이것이 도움이 되길 바랍니다.

+0

oops, 여기는 코드에 붙여 넣을 때 오류가 발생했지만 제안 사항이 모두 도움이되었습니다. $ this-> upload-> display_errors()에 대한 호출에서 추가하고 몇 가지 의미있는 정보를 얻었습니다 , 그것이 올바른 파일 유형이라고 생각하지 않았기 때문에 파일이 거부되었다는 것을 알았습니다. 이것에 대해 조금 더 조사했는데 이것이 codeigniter의 버그라는 것을 알았습니다. mimes.php 파일을 config 아래에서 편집해야했습니다. 배열 ('application/pdf', 'application/x-pdf', 'application/octet-stream') 여러분의 모든 도움에 감사드립니다! –