개발 Q&A

제목 upload library 사용 파일 업로드시 max_size 에러 메세지문제
글쓴이 박기천 작성시각 2014/02/27 17:27:06
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 15416   RSS
 upload library 사용 첨부파일을 업로드하고 있습니다

문제는 php.ini에 설정된 용량보다 큰것을 올리게 되면 

$this->set_error('upload_no_file_selected')로 에러가 발생합니다 

메세지는 You did not select a file to upload로 출력됩니다

만일 max_size에 1M를 설정하고 php.ini에 5M 가 설정 되어있다고 가정할 때 

3M를 올리면 

The file you are attempting to upload is larger than the permitted size.로 정상 출력되는데

6M를 올리게되면 You did not select a file to upload가 출력되고 있습니다

어디에 문제가 있으며 무엇을 수정해야 할까요?


 다음글 리눅스 apm 최신버전 바꾸려고하는데요? (1)
 이전글 부모창이 닫히면 자식창도 저절로 닫히게 하는 방법은 없... (3)

댓글

변종원(웅파) / 2014/02/27 19:13:57 / 추천 0
해당 라이브러리 내에서  You did not select a file to upload 를 찾아서 상세하게 조건 분기를 하시면 되겠죠.
ci외 질문게시판으로 이동합니다.
박기천 / 2014/02/28 11:18:09 / 추천 0
웅파님 

  public function do_upload($field = 'userfile')
{
 
// Is $_FILES[$field] set? If not, no reason to continue.
if ( ! isset($_FILES[$field]))
{
$this->set_error('upload_no_file_selected');
return FALSE;
}

$lang['upload_no_file_selected'] = "You did not select a file to upload.";


위에서 에러가 걸리는것같은데 실제 첨부 안한것과 php.ini의 요량을 초과한는것을 구분하여 분기를 어떻게 해야 할까요?


 
한대승(불의회상) / 2014/02/28 11:39:16 / 추천 0
박기천// $this->upload->display_errors() 함수로 확인하여 처리 하세요.
http://cikorea.net/user_guide_2.1.0/libraries/file_uploading.html
박기천 / 2014/02/28 12:10:20 / 추천 0
 불의 화상님 

소스는 아래와 같이 하고 $this->upload->display_errors('','')를 사용하였습니다


    function only_upload_file(){
        $upload_folder = $this->_upload_folder_path(BOARD_UPLOAD_FILE_FOLDER);
        
        // 사용자가 업로드 한 파일을 /data/file/ 디렉토리에 저장한다.
        $config['upload_path'] = $upload_folder;
        // git,jpg,png 파일만 업로드를 허용한다.
        $config['allowed_types'] = 'jpeg|gif|jpg|png|bmp|zip|rar|doc|hwp|pdf|ppt|xls|pptx|docx|xlsx|txt';
        //$config['allowed_types'] = 'xls|xlsx';
        // 허용되는 파일의 최대 사이즈
        $config['max_size'] = '7200';
        // 이미지인 경우 허용되는 최대 폭
        $config['max_width']  = '0';
        // 이미지인 경우 허용되는 최대 높이
        $config['max_height']  = '0';
        //파일이름은 랜덤하게 암호화된 문자열로 변경
        $config['encrypt_name'] = TRUE;
               
        $this->load->library('upload', $config);
        
        if ( ! $this->upload->do_upload("upload_file")){
            echo '{"files":[{"proc":"F","msg":"'.$this->upload->display_errors('','').'"}]}';
        }else{
            $data = $this->upload->data();            
            $filename = $data['file_name'];
            $origname = $data['orig_name'];
            $fullPath = str_replace($_SERVER['DOCUMENT_ROOT'], '', $data['full_path']);
 
                       
            echo '{"files":[{';
            echo '"proc":"T",';
            echo '"msg":"전송에 성공 했습니다",';
            echo '"name":"'.$origname.'",';
            echo '"fullPath":"'.$fullPath.'"';
            echo '}]}';
        }
    }

한대승(불의회상) / 2014/02/28 12:17:51 / 추천 0
박기천// json을 사용하신다면 json_encode() 라는 편리한 함수가 있답니다.
박기천 / 2014/02/28 14:02:37 / 추천 0
 불의회상 // 네 json부분은 json_encode()로 바꿨습니다 감사합니다