2013-05-16 2 views
0

필요한만큼 파일을 추가 할 수있는 업로드 양식이 있습니다. 그러나 파일을 업로드하려고 할 때 오류가 발생합니다.Codeigniter, 같은 이름의 여러 파일 업로드

Array ([0] => license.txt [1] => license.txt) 

내가 업로드가 작동하는 방법에 완전히 붙어 오전 :

$this->load->library('upload'); 
$error = ""; 
$file = ""; 
$this->total_count_of_files = count($_FILES['user_certificates']['name']); 
print_r($_FILES['user_certificates']['name']); 

for($i=0; $i<$this->total_count_of_files; $i++) 
{ 
    $_FILES['user_certificates']['name'] = $_FILES['user_certificates']['name'][$i]; 
    $_FILES['user_certificates']['type'] = $_FILES['user_certificates']['type'][$i]; 
    $_FILES['user_certificates']['tmp_name'] = $_FILES['user_certificates']['tmp_name'][$i]; 
    $_FILES['user_certificates']['error'] = $_FILES['user_certificates']['error'][$i]; 
    $_FILES['user_certificates']['size'] = $_FILES['user_certificates']['size'][$i]; 

    $config['encrypt_name'] = TRUE; 
    $config['file_name'] = $_FILES['user_certificates']['name']; 
    $config['upload_path'] = './certificate_files/'; 
    $config['allowed_types'] = 'txt|pdf|doc|docx'; 
    $config['max_size'] = 0; 

    $this->upload->initialize($config); 

    if (!$this->upload->do_upload()) 
    { 
     $status = 'error'; 
     $msg = $this->upload->display_errors(); 
    } 
    else 
    { 
     $data = $this->upload->data(); 
     $file = $data['raw_name'] . $data['file_ext']; 
    } 
    if($file) 
    { 
     $status = "success"; 
     $msg = "Image successfully uploaded"; 
    } 
    else 
    { 
     $status = "error"; 
     $msg = "Something went wrong when saving the image, please try again."; 
    } 
} 
echo json_encode(array('status' => $status, 'msg' => $msg)); 
exit(); 

print_r($_FILES['user_certificates']['name']))

컨트롤러는 나에게 내가 추가 한 파일을 보여줍니다. 어떤 아이디어?

미리 환호하십시오!

편집

나는 변경하는 경우이 : 이것에

if (!$this->upload->do_upload()) 

:

if (!$this->upload->do_upload('user_certificates')) 

작동하지만, 단 하나 개의 파일에 대해, 그것은 다시 루프 라운드로하지 않는 것 어떤 이유로

+0

d ** 오류 ** 무엇이 발생하고 있습니까 ??? –

+0

파일이 어떤 폴더에도 업로드되지 않고 'echo json_encode (array ('status '=> $ status,'msg '=> $ msg)); '{ "상태": "오류", "msg": "파일을 저장할 때 문제가 발생했습니다. 다시 시도하십시오."}'. 따라서 오류는 config가 초기화 된 후에 발생합니다. 어떤 생각? – Pooshonk

+0

파일이 업로드되고있는 것 같지만'$ data [ 'raw_name']'에 대한 값을 어디에서 설정하고 있습니까? –

답변

2

루프가 올바르지 않은 것 같습니다.

... 
$_FILES['user_certificates']['name'] = $_FILES['user_certificates']['name'][$i]; 
... 

이 라인은 원래 $ _FILES 배열을 덮어 쓰기 때문에 덮어 얻었 기 때문에 첫 번째 루프의 완료 후에는 루프에서 뭔가를 찾을 수 없습니다.

대신 $ _FILES 배열을 로컬 변수에 저장하고 루프를 통해 하나씩 업로드 할 수 있습니다.

+0

어떻게 그 문제를 해결할 수 있을지 궁금하십니까? – Pooshonk

+1

필자가 제안했듯이, $ temp = $ _FILES와 같은 루프를 시작하기 전에 $ _FILES를 임시 변수에 저장하고 $ temp를 통해 루프 할 수 있으며, 루프 내부에서 임시 변수를 사용하여 $ _FILES 변수를 초기화 할 수 있습니다. 그것을 밖으로 시도하십시오. 작동하지 않으면 알려주세요. –

+0

아, 훌륭했습니다! 대단히 감사합니다. 그런 작은 변화가 큰 차이를 만듭니다! – Pooshonk