제목 | 파일업로드시 타입 에러 | ||
---|---|---|---|
글쓴이 | 변종원(웅파) | 작성시각 | 2010/05/13 15:39:52 |
|
|||
Upload 라이브러리 이용하여 업로드시 분명히 맞는 파일타입임에도 업로드가 되지 않을때가 있습니다. $allow_type = array('jpg', 'zip'); //이렇게 이미지가 먼저 나올 경우 에러가 납니다. 원래 core를 건드리지 않는다가 철칙이지만 버그인 경우는 어쩔 수 없이 손을 댑니다. system/libraries/Upload.php 파일의 다음함수를 바꿔주시면 됩니다. /** * Verify that the filetype is allowed * * @access public * @return bool */ function is_allowed_filetype() { if (count($this->allowed_types) == 0 OR ! is_array($this->allowed_types)) { $this->set_error('upload_no_file_types'); return FALSE; } //kofic - hacking - start $ext_found = 0; $ext = $this->file_ext; $ext = str_replace(".","",$ext); //kofic - hacking - end $image_types = array('gif', 'jpg', 'jpeg', 'png', 'jpe'); foreach ($this->allowed_types as $val) { //kofic - hacking - start if ( strtolower($val) == strtolower($ext) ){$ext_found = 1;} //kofic - hacking - end $mime = $this->mimes_types(strtolower($val)); //kofic - hacking - start // Images get some additional checks //kofic - commenting original code - start //if (in_array($val, $image_types)) //kofic - commenting original code - end if (in_array($ext, $image_types)) //kofic - hacking - end { if (getimagesize($this->file_temp) === FALSE) { return FALSE; } } if (is_array($mime)) { if (in_array($this->file_type, $mime, TRUE)) { return TRUE; } } else { if ($mime == $this->file_type) { return TRUE; } } } //kofic - hacking - start if ( $ext_found ){ return TRUE; } //kofic - hacking - end return FALSE; } |
|||
다음글 | codeigniter Asset helper (4) | ||
이전글 | 다중 데이터베이스 접속 및 모델, 프로파일러 확장 (2) | ||
배강민
/
2010/05/13 16:01:13 /
추천
0
|
kirrie
/
2010/05/13 16:10:03 /
추천
0
ㅎㅎㅎ 저도 며칠전에 이거 발견하고 수정했는데. ㅋㅋ
이 업로드 클래스가 웃긴게 이미지가 아니어도 굳이 이미지 파일인지 아닌지 검사하려고 그러던 거였더라구요. |
케이든
/
2010/05/13 16:12:31 /
추천
0
좋스빈다!!
코어를 안건드리고 확장해서 메쏘드를 오버라이딩 하면 되지 않을까요? |
kirrie
/
2010/05/13 16:18:58 /
추천
0
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class MY_Upload extends CI_Upload { function MY_Upload($props = array()) { parent::CI_Upload($props); } /** * Verify that the filetype is allowed * * @access public * @return bool */ function is_allowed_filetype() { if (count($this->allowed_types) == 0 OR ! is_array($this->allowed_types)) { $this->set_error('upload_no_file_types'); return FALSE; } $image_types = array('gif', 'jpg', 'jpeg', 'png', 'jpe'); foreach ($this->allowed_types as $val) { $mime = $this->mimes_types(strtolower($val)); // Images get some additional checks if (in_array($val, $image_types) && $this->is_image() === TRUE) { if (getimagesize($this->file_temp) === FALSE) { return FALSE; } } if (is_array($mime)) { if (in_array($this->file_type, $mime, TRUE)) { return TRUE; } } else { if ($mime == $this->file_type) { return TRUE; } } } return FALSE; } // -------------------------------------------------------------------- } /* End of file */전 이렇게 수정해서 확장했습니다. |
변종원(웅파)
/
2010/05/13 16:29:00 /
추천
0
키리에/ 땡유. ^^
|
아.. 그렇군요.. 아직 파일 업로드까진 안해봐서리... 캄사합니다...2.0에서는 해결될라낭...