| 제목 | 복수개 파일 업로드 후, 업로드한 파일정보 db테이블에 insert 처리 | ||
|---|---|---|---|
| 카테고리 | PHP | ||
| 글쓴이 | 그동안 | 작성시각 | 2019/06/20 00:32:05 | 
|  | |||
| 복수개 파일 업로드 후(서버에 파일 올리는데 성공), 파일 업로드된 개수만큼 foreach해서 - 업로드된 경로 - 업로드된 파일명 를 DB에 저장하려고 합니다. 
 $upfile_info = $this->upload->data(); //[1] 복수개 파일업로드 했을경우 어떻게 해야 할까요? 배열로 돌림? 잘안되네요;; foreach($upfile_info as $key => $value) //[2] 업로드한 이미지 수 만큼 foreach하고 싶습니다 'portfolio_img_name' => $upfile_info['file_name'] , //[3] foreach된 이미지명 대입을 어떻게 해야 할까요? 
 
[컨트롤러]
//$this->upload->data는 업로드된 파일의 다양한 정보를 갖고 있다
$upfile_info = $this->upload->data();	                                //[1] 복수개 파일업로드 했을경우 어떻게 해야 하는지요
//포트폴리오 이미지
//foreach($upfile_info as $key => $value)                               //[2] 업로드한 이미지 수 만큼 foreach하고 싶습니다               
//{
    $data = array(                                          //db에 요청할 값을 배열로 만듬. db필드명 => 수정값 
	  'db_table_name' => 'profile_portfolio_img' ,                      //업데이트할 DB 테이블명
	  'pport_id' => $result ,
	  'portfolio_img_path' => $upfile_info['file_path'] ,               
	  'portfolio_img_name' => $upfile_info['file_name'] ,               //[3] foreach된 이미지명 대입을 어떻게 해야 할까요 
      'created_by' => $this->session->userdata('user_nm') ,                             
      'created_ip' => $this->session->userdata('ip_address')                                       
    );
    $result = $this->profile_portfolio_img_m->my_profile_add_06_insert($data);            
 | |||
| 다음글 | 목록 필터 기능을 만들고 있는데요, 뷰 목록의 게시물이... (7) | ||
| 이전글 | ftp 업로드시 ftp_connect, ftp_logi... (1) | ||
| 
                                kaido
                                /
                                2019/06/20 09:39:26 /
                                추천
                                0
                             | 
| 
                                그동안
                                /
                                2019/06/20 10:53:33 /
                                추천
                                0
                             kaido님, 일단 서버에 복수파일 업로드는 구현된 상황인데요,,, 복수업로드 된 파일정보를 db 테이블에 insert하는 부분에서 막혀서 질문 드렸습니다. 질문 글의 [1][2][3]번 부분에 대해 가르침을 좀 부탁 ㅠㅠ 
 | 
| 
                                kaido
                                /
                                2019/06/20 11:09:05 /
                                추천
                                0
                             
/** 업로드 옵션 */
function set_upload_options()
{
    //upload an image options
    $config = array();
    $config['upload_path'] = FCPATH . 'uploads/product/temp/';
    //$config['allowed_types'] = 'gif|jpg|png';
    $config['allowed_types'] = '*';
    $config['max_size'] = '51200'; //50MB  ... 단위는 KB
    $config['overwrite'] = false;
    $config['max_width'] = 0; //무제한
    $config['max_height'] = 0; //0 무제한
    return $config;
}
/** 멀티 형태 업로드 */
function _do_upload_multi($target_file, $insertId = null)
{
    $this->load->library('upload');    
    $files = $_FILES;
    $cpt = count($_FILES["$target_file"]['name']);
    $target_file_temp = $target_file . "_temp";
    for ($i = 0; $i < $cpt; $i++) {
        $_FILES["$target_file_temp"]['name'] = $files["$target_file"]['name'][$i];
        $_FILES["$target_file_temp"]['type'] = $files["$target_file"]['type'][$i];
        $_FILES["$target_file_temp"]['tmp_name'] = $files["$target_file"]['tmp_name'][$i];
        $_FILES["$target_file_temp"]['error'] = $files["$target_file"]['error'][$i];
        $_FILES["$target_file_temp"]['size'] = $files["$target_file"]['size'][$i];
        $this->upload->initialize($this->set_upload_options());
        if (!$this->upload->do_upload($target_file_temp)) {
            $error = array('error' => $this->upload->display_errors());
            echo '<xmp>'; print_r($error); echo '</xmp>';            
            return false;
        } else {            
            $data = array('upload_data' => $this->upload->data());
            // $data["upload_data"]["file_name"]; 
            // .....
            // $data["upload_data"]["file_size"]; 
            echo '<xmp>'; print_r($data); echo '</xmp>';
        }
    }    
}
가장 기본 형태입니다. 나머지는 그동안님의 센스 있는 코딩이 필요합니다 ! | 
| 
                                그동안
                                /
                                2019/06/20 12:21:02 /
                                추천
                                0
                             한가지만 더 물어볼께요~~;; 파일 2개 서버에 업로드된 것 확인하고. 아래 값 찍어보면 $data = array('upload_data' => $this->upload->data()); 
 이렇게 1개 파일만 확인 됩니다. $data = array <=== 왜 array 했는데 1개만 확인될까요??? <xmp>Array ) 
 | 
| 
                                kaido
                                /
                                2019/06/20 13:43:34 /
                                추천
                                0
                             같은 $data 안에 2번 들어간것 아닌가요? $data[1] $data[2] 이런 형태로 각각 나눠서 넣으시면 잡힐것 같습니다 
 | 
복수 업로드는 upload 라이브러리 그대로 사용하시면 안됩니다 ㅎㅎ
우선 복수 업로드 기존 php 코드부터 분석해 보시는게 좋습니다.
이부분은 가능하면 꼭 참고해 보시길 바랍니다.
사실 복수 업로드가 별거 없습니다
복수일경우 print_r 찍어보시면 복수 배열로 넘어옵니다.
ci upload 는 단일 업로드를 기준으로 만들어져서 별도의 로직처리가 필요합니다.
codeigniter multy upload 찾아보시면 커스텀 라이브러리가 많이 돌아다닙니다. 그걸 참고하시는게 더 빠릅니다.