CI 묻고 답하기

제목 다중업로드가 잘되지않습니다
글쓴이 지침 작성시각 2014/02/27 17:53:39
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 14197   RSS
다중업로드시 리눅스에 업로드는 됩니다.
업로드할때 기존 파일이름으로 넣지 않고 소스에 보다시피 strtotime을 써서 날짜로 파일을 넣습니다
첫번째파일은 정확하게 예)13934913871.doc로 들어갑니다
두번째파일은 업로드는 되지만 소스를 보면 예)13934913871_1.doc 이렇게 들어가야 정상인데
139349138711.doc 이렇게 뒷자리에 1이 더 생겨서 들어갑니다
소스(1) 부분에 echo로 찍을땐 13934913871_1.doc 나오는데 업로드된 파일을 보면 139349138711.doc 이렇게 나옵니다
해결방법좀 알려주세요 ..
if(empty($config)){
$config['upload_path'] = './upload/';
$config['allowed_types'] = 'pdf|doc|docx|ppt|pptx|xls|xlsx';
$config['file_name'] = $Time;
}
$this->load->library('upload', $config);
foreach($_FILES as $key => $value){
switch ($key){
case "userfile":
case "userfile2":
$config['file_name'] = $Time.'_1';
echo $config['file_name'];            //// (1)
break;
}if ( ! $this->upload->do_upload($key)){
$error = array('error' => $this->upload->display_errors());
$this->load->view('test/index', $error);
}else{
$upload_data= $this->upload->data();
}
}
 다음글 View 에서 소비할 javascript 위치.. (2)
 이전글 $this->input->get('data'... (1)

댓글

변종원(웅파) / 2014/02/27 19:15:32 / 추천 0
매뉴얼을 다시 보시기 바랍니다. ci는 중복된 값이 있을 경우 자동으로 1씩 증가해줍니다.
옵션에서 중복체크하는 걸 빼고 테스트해보세요.
criuce / 2014/02/28 03:05:18 / 추천 0
코드 보시면 foreach 안에서 config의 파일 이름을 다시 지정하고 있는데 이 값이 upload 라이브러리에 다시 적용되고 있지 않습니다.

foreach 문 안에 config 설정 값 바꾸신후 다시 초기화 해주셔야 합니다.

메뉴얼 정독하고 해보세요.
지침 / 2014/02/28 17:28:27 / 추천 0
 변종원,criuce님 답변 감사합니다.. 
다시 초기화 해서 하니 잘 들어갑니다.. 
////
한가지만 더 질문해도 되나요..
하루종일 해결할려고 했는데 도저히 머리가 아파서 질문해봅니다..

아까전엔 파일을 여러개의 변수명을 받아서 업로드하니 $this->upload->data(); 가 먹혔지만
파일을 배열로 userfile[] 받아서 처리할려니 도저히 안되네요....

  public function do_upload(){
  $Time = strtotime("now"); //등록날짜
  $this->load->library('upload'); 
  $field_name = 'userfile';
  $cnt_field = count($_FILES[$field_name]['name']);
 
  $files = $_FILES;
  
  $config['upload_path'] = './upload/';
  $config['allowed_types'] = 'pdf|doc|docx|ppt|pptx|xls|xlsx';
  
  for($i=0; $i<=$cnt_field; $i++){
   if(!empty( $_FILES[$field_name]['name'][$i])){     //여러개 업로드할때 없는 파일을 제외하고 실행 
      
    
    $_FILES['userfile']['name'] = $files['userfile'][$i];
    $this->upload->initialize($config);
    
    $this->upload->do_upload(); 
    
    //print_r( $_FILES[$field_name]['name'][$i]);
    //print_r(!empty( $_FILES[$field_name]['name']['0']));
   }
  
  }
  
  
  
  
 }


소스는 이겁니다...$this->upload->do_upload($field_name);
할려니 배열이라서 업로드가 안됩니다.. 
도저히 해결할수없어서 이렇게 질문을합니다.. 조금만 도움을 주시면 감사하겠습니다..


criuce / 2014/03/01 05:35:45 / 추천 0
배열로 된걸 다시 풀어내는 수밖에 없어요.