CI 묻고 답하기

제목 CK에디터... 이미지 파일 업로드는 되는데..
글쓴이 아 골치야 작성시각 2014/08/22 15:16:01
댓글 : 22 추천 : 0 스크랩 : 0 조회수 : 24702   RSS
업로드한 이미지가 불러와져서 글상자에 들어가야하잖아요? 그런데 안오더라구요..

function imgdata_add()
{
        $config['upload_path'] = './content/img/';        
        $config['allowed_types'] = 'gif|jpg|png';        
        $config['max_size'] = '100';        
        $config['max_width']  = '1024';        
        $config['max_height']  = '768';        
        $config['encrypt_name'] = TRUE;        
        $config['remove_spaces'] = TRUE;        
        $config['overwrite'] = FALSE;

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

        if ( ! $this->upload->do_upload("upload"))
        {
            $error = array('error' => $this->upload->display_errors());
            
            echo $this->upload->display_errors();
        }
        else
        {            
            $a = $this->input->get('CKEditorFuncNum');
            //$a = 1;
            
            $data = $this->upload->data();
            $filename = $data['file_name'];

            $url = '/content/img/'.$filename;            
            echo "<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction('".$a."', '".$url."', '전송.')</script>";
            
        }

}

이렇게 했는데...크롬으로 확인해보니까
$this->input->get('CKEditorFuncNum'); 이부분 값이 들어오지 않더라구요.

ㅠㅠ 도무지 뭐가 잘못된건지 모르겠어요..;

코디귤레이터는 하는수없이 1.7.3 사용중입니다..ㅠㅠ 서버의 사양때문에..;

설마 코디 버전이 너무 낮아서 그런걸까요?
 다음글 redirect 문제 (3)
 이전글 모든 페이지 로그인 여부 체크 방법 문의 (8)

댓글

수야디벨 / 2014/08/22 15:29:33 / 추천 0
$a 를 1로 넣어보세요
아 골치야 / 2014/08/22 15:40:32 / 추천 0
음.. 그렇게 하면 올라가긴 하는데 ㅠ.ㅜ

텍스트에리어를 2개 사용하고 있거든요.. 거기서 이미지 업로드할때 한쪽 텍스트박스에는 이미지가 안올라가더라고요..

그거때문이 아닌지..ㅠㅠ
변종원(웅파) / 2014/08/22 15:47:16 / 추천 0
post 전송하셨으면 post로 받으셔야죠. ^^;

CKEditorFuncNum <- 이거만 따로 주소에 붙여서 보내시나요?
아 골치야 / 2014/08/22 16:02:38 / 추천 0
포스트로 바꿔서 해봐도 안되더라구요..

제 프로그래밍 실력이 미비해서..; CKEditorFuncNum 를 따로 주소에 붙여서 보낸다는게 무슨말인지 잘 모르겠네요. ㅠㅠ;

http://opentutorials.org/course/697/3868 이 영상보고 해었거든요.

CKEditorFuncNum  요 값이 기본값이 1인거 같더라구요. 

크롬으로 네트워크 확인하는란에서 뜨는 주소.. 여기에있는 
imgdata_add?CKEditor=description&CKEditorFuncNum=1&langCode=ko
CKEditorFuncNum 를 가지고 와야하는데.. 그게 안되고 있네요 T^T

텍스트박스 1개 사용할때는 그냥 1 넣어놓고 사용해도 아무 이상 없는데.. 2개부터는 문제가 생기더라구요..

 
가입테스트 / 2014/08/22 16:10:24 / 추천 0
mgdata_add?CKEditor=description&CKEditorFuncNum=1&langCode=ko 주소에 붙어 있네요.

get은 주소의 파라미터에서 가져오고 post는 쉽게 말해 input 태그에서 전송된다고 보시면 됩니다.

var_dump($this->input->get()); 으로 내용 출력해보세요.
아 골치야 / 2014/08/22 16:18:18 / 추천 0
$this->input->post('CKEditorFuncNum');
$this->input->get('CKEditorFuncNum');

var_dump($this->input->post());
var_dump($this->input->get());
var_dump($this->input->post('CKEditorFuncNum'));
var_dump($this->input->get('CKEditorFuncNum'));

이렇게 해서 확인 해봤는데요~ 네개 모두 false로 나오네요 T^T 제가 뭔가 로딩을 안해놓은게 있는걸까요..?
하늘치 / 2014/08/22 17:39:24 / 추천 0
혹시 upload_path 때문은 아닐까요??


업로드 할 때는 './content/img/' 이고


불러올 때는 '/content/img/' 로 되어 있네요..

 
변종원(웅파) / 2014/08/22 17:54:36 / 추천 0
업로드 패스와는 상관없이 업로드가 성공했다면 나와야 하는 값인데 뭔가 잘못 됐네요.

post()도 안나오는거 보면요.

config.php에 url관련 셋팅값 올려줘보세요
하늘치 / 2014/08/22 18:08:14 / 추천 0
아, 제가 문제를 잘못 이해했네요.
저도 현재 쓰고 있는 걸로 테스트 해봤는데,

$this->input->get('CKEditorFuncNum');

요 값에 1이 넘어오네요.

음.. 이 값 자체가 왜 안넘어오는 건지 저도 궁금하군요..


참고로, CKEditor 설치할 때 검색해본 내용에 의하면..
업로드를 하고 마지막에 아래 내용을 출력하라고 되어 있었어요.
고민해보지 않고 그냥 쓰고 있었네요;;

 
// Required: anonymous function reference number as explained above.
$funcNum = $_GET['CKEditorFuncNum'] ;

// Optional: instance name (might be used to load a specific configuration file or anything else).
$CKEditor = $_GET['CKEditor'] ;

// Optional: might be used to provide localized messages.
$langCode = $_GET['langCode'] ;

// Check the $_FILES array and save the file. Assign the correct path to a variable ($url).
//$url = '/path/to/uploaded/file.ext';
$url = $upload_url;

// Usually you will only assign something here if the file could not be uploaded.
$message = '';

echo "<script type='text/javascript'>window.parent.CKEDITOR.tools.callFunction($funcNum, '$url', '$message');</script>";


 
아 골치야 / 2014/08/23 02:19:54 / 추천 0
한숨 자고 일어나서 지금 댓글들 봤네요 ㅜ.ㅠ 음.. 

$config['base_url']    = "http://아무게.co.kr/";
$config['index_page'] = "index.php";
$config['uri_protocol']    = "AUTO";
$config['url_suffix'] = "";

콘피그에 넣은것들은 요게단데.. 음.. ㅠ.ㅠ
darkninja / 2014/08/23 18:46:36 / 추천 0
아,,,
궁금해서 그러는데요
저 함수가 controller 에 포함된 것인가요?
호출은 어디에서 어떻게 하신건지? ㅠㅠ
upload.php 를 만들어서 하면 되는데
ci 의 controller 내부의 함수를 부르는건 안되던데...
ci 2.2 입니다.
http://dryad.kr/bbs/board.php?bo_table=rboard01&wr_id=319
아 골치야 / 2014/08/24 15:01:32 / 추천 0
저 함수를 contentup.php 라는 컨트롤러에 넣어서 사용하고 있습니다..

저 함수를 호출하는건 CK에디터가 작동되게 만든 VIEW 파일의 바텀파일이구욤..ㅠ.ㅠ

뷰파일엔 이렇게 넣었어요
<script>CKEDITOR.replace('description',{filebrowserUploadUrl:'/index.php/contentup/imgdata_add'});</script>
darkninja / 2014/08/24 21:15:18 / 추천 0
뭐가 문제일까요?
https://github.com/EllisLab/CodeIgniter/tree/2.2-stable
여기에서 ci 2.2 를 다운 받아 htdocs 에 설치하였습니다.

http://ckeditor.com/download
여기에서 ckeditor 풀패키지를 htdocs 에 설치 하였습니다.

귀차니즘으로 최소한의 코드만 작성하기 위하여
welcome controller 에 아래 코드를 붙여 넣었습니다.
public function imgdata_add() {
  if ($_FILES["upload"]["size"] > 0 ) {
    // 현재시간 추출
    $current_time = time();
    $time_info = getdate($current_time);
    $date_filedir = $time_info["year"].$time_info["mon"].$time_info["time"].$time_info[seconds].$time_info[minutes].$time_info[hours];
    //오리지널 파일 이름.확장자
    $ext = substr(strrchr($_FILES["upload"]["name"],"."),1);
    $ext = strtolower($ext);
    $savefilename = $date_filedir."_editor_image".".".$ext;
    define('ROOT_DIR', '/');
    $uploadpath  = $_SERVER['DOCUMENT_ROOT'].ROOT_DIR."content/img/";
    $uploadsrc = $_SERVER['HTTP_HOST'].ROOT_DIR."content/img/";
    $http = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ? 's' : '') . '://';
    //php 파일업로드하는 부분
    if($ext=="jpg" or $ext=="gif" or $ext =="png") {
      if(move_uploaded_file($_FILES['upload']['tmp_name'],$uploadpath."/".$savefilename)) {
        $uploadfile = $savefilename;
        echo "<script type='text/javascript'>alert('업로드성공');</script>;";
      }
    } else {
      echo "<script type='text/javascript'>alert('jpg,gif,png파일만 업로드가능합니다.');</script>;";
    }
  } else {
    echo 'no file!';
    exit;
  }
  echo 
    "<script type='text/javascript'> window.parent.CKEDITOR.tools.callFunction({$_GET['CKEditorFuncNum']}, '". // '0'
    $http.$uploadsrc."$uploadfile');</script>;";
}
같은 이유로 아래코드를 view / welcome_message.php 에 </body> 의 바로위에
붙여 넣었습니다.
 
<p><strong>Description</strong></p>
<textarea id="description" name="description"></textarea>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript" src="/ckeditor/ckeditor.js"></script>
<script>CKEDITOR.replace('description',{filebrowserUploadUrl:'/index.php/welcome/imgdata_add'});</script> 
되는군요!
남은건 약간의 삽질이...

 
아 골치야 / 2014/08/26 03:31:16 / 추천 0
ㅡ.ㅜ 버전문젠가 ㅠㅠ
darkninja / 2014/08/26 20:51:55 / 추천 0
http://www.cikorea.net/user_guide_2.1.0/libraries/input.html
포럼에 있는 ci 1.7.2 버젼은
config.php 에
$config['allow_get_array'] = TRUE;
이게 없습니다.
추가를 해보지만 역시 안되는군요.

system/libraries/input.php 파일을 까봅니다.
역시 적용이 안되어 있습니다.
클래스 초기화 함수인거 같습니다.

function CI_Input()
{
  log_message('debug', "Input Class Initialized");

  $CFG =& load_class('Config');
  $this->use_xss_clean    = ($CFG->item('global_xss_filtering') === TRUE) ? TRUE : FALSE;
  //$this->allow_get_array    = ($CFG->item('enable_query_strings') === TRUE) ? TRUE : FALSE;
  $this->allow_get_array    = ($CFG->item('allow_get_array') === TRUE) ? TRUE : FALSE; // 수정
  $this->_sanitize_globals();
}

더 간단한 방법은
parse_str($_SERVER['QUERY_STRING'], $_GET);
    $CKEditorFuncNum = $_GET['CKEditorFuncNum'] ;   
이것입니다.