CI 묻고 답하기

제목 배열처리시 질문드립니다.
카테고리 CI 2, 3
글쓴이 손씨가문 작성시각 2017/06/19 14:55:20
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 19002   RSS

파일 배열때문에 골치가 아프네요

 

<input type="file" name="file_1[]" id="file_1" class="file_input_hidden w350" onchange="change_name(this);" />

<input type="file" name="file_1[]" id="file_2" class="file_input_hidden w350" onchange="change_name(this);" />

<input type="file" name="file_1[]" id="file_3" class="file_input_hidden w350" onchange="change_name(this);" />

<input type="file" name="file_1[]" id="file_4" class="file_input_hidden w350" onchange="change_name(this);" />

 

현재 이렇게 파일 배열이 있습니다.

 

$config['upload_path']      = $this->home_path.'/upfiles/addconsult/';        

$config['allowed_types']    = '*';        

$config['max_size']         = '5120';      

 $this->load->library('upload', $config);      

 $this->load->library('MY_Upload');        

$this->upload->do_multi_upload('file_1');

 $path_img = '/upfiles/addconsult/';                              

foreach($this->upload->get_multi_upload_data() as $file):                           

 $filename[$counting] = $path_img.$file['file_name'];            

$counting++;      

 endforeach;                        

 

이 위에 부분은 이미지를 저장하는 부분인데요.

문제는 파일 배열을 처음부터 차례차례 넣을 때는 잘 들어갑니다.

그러나 앞에 파일을 빼고 뒤에 파일만 넣을 경우에 문제가 발생하네요. 앞에서 파일이 없어서 바로 튕겨나가는것 같습니다.

ex) 2개 배열있을때 2번째껏만 파일 넣었을 때 , 3개 배열 있을때 1,2번 빼고 3번만 , 1번빼고 2,3번만 넣거나.

 

혹시 이 배열에 값을 넣지 않았을 때 처리 방법이 따로 있을가요?

 다음글 events::trigger, events::regis... (2)
 이전글 DB문제에요.. 주말에 유독 DB가 잘 죽는 것 같은 ... (3)

댓글

kaido / 2017/06/19 15:09:09 / 추천 0

제 기억이 맞다면 ci file upload 에는 멀티 파일 업로드 기능이 없는걸로 기억합니다.

커스텀하여 사용하는 라이브러리로 보입니다.

 해당 라이브러리 제작자나 사이트를 찾아서 확인해 보셔야 하며, 해결이 되지 않는 다면 직접 수정을 하셔야 합니다.

예상되는 문제로는 파일 배열은 빈값을 포함해서 foreach 으로 도는데...

빈값의 배열의 file name 을 가져오라는 부분 때문이 에러나지 않나 생각 드네요.

 

isset 등으로 배열이 비어있는지 값이 있는지 확인하는 처리를 하시면 에러는 막을 수 있습니다.

손씨가문 / 2017/06/19 16:19:36 / 추천 0

네. get_multi_upload_data 이건 이제 여러개의 파일을 올릴 때 쓰이는 커스텀 라이브러리입니다.

저렇게 배열로 처리하였을 때, 미리 저장 후 foreach로 경로를 찍어주는 문젠데, 저장하는 부분이 에러가 나네요

결국 처음 것이 저장이 안되니 foreach에서 돌렸을 때 0으로 찍히네요.

 

커스텀 라이브러리 말고 처리 방법은 있을까요?

 

kaido / 2017/06/19 16:22:43 / 추천 0

CI를 사용하지 않는 네이티브 php 에서 멀티 파일업로드 처리 방법을 보시면 해답이 나오실거라 생각 됩니다.

http://php.net/manual/kr/features.file-upload.multiple.php

 

사실 CI 파일업로드는 어디까지나 간편성을 제공 하는것이지, 만능은 아닌 부분이 있어서 개인적으로 만들어 쓰는 경우도 많습니다.

손씨가문 / 2017/06/20 21:52:25 / 추천 0
하루동안 해결 방법을 찾았는데, 아직도 못했네요..하하..