2026, 새로운 도약을 시작합니다.

그누보드5 ckeditor 이미지 업로드 질문 채택완료

ckeditor 이미지 클릭 시 '업로드' 부분은 만들었습니다.

하지만 서버로 전송을 해야 하던데... 이 부분을 어떻게 해야하는지..

아래 save dir/url 을 서버 주소, 폴더로 해야하나요?

막막하네요 ㅠㅠ

1. upload.php

<?php
require_once("config.php");
// 업로드 DIALOG 에서 전송된 값
$funcNum = $_GET['CKEditorFuncNum'];
$CKEditor = $_GET['CKEditor'];
$langCode = $_GET['langCode'];
 
$tempfile = $_FILES['upload']['tmp_name'];
$filename = $_FILES['upload']['name'];
 
$type = substr($filename, strrpos($filename, ".")+1);
$found = false;
switch ($type) {
case"jpg":
case"jpeg":
case"gif":
case"png":
$found = true;
}
 
if ($found != true) {
exit;
}
 
// 저장 파일 이름: 년월일시분초_렌덤문자
// 20140327125959_abcdefghi.jpg
 
$filename = cke_replace_filename($filename);
$savefile = SAVE_DIR .'/'.$filename;
$save_url = SAVE_URL .'/'.$filename;
 
move_uploaded_file($tempfile, $savefile);
$imgsize = getimagesize($savefile);
$filesize = filesize($savefile);
 
if (!$imgsize) {
$filesize = 0;
$random_name = '-ERR';
unlink($savefile);
};
 
try {
if(defined('G5_FILE_PERMISSION')) chmod($savefile, G5_FILE_PERMISSION);
} catch (Exception$e) {
 
}
 
echo"<script>window.parent.CKEDITOR.tools.callFunction($funcNum, '$save_url', '업로드완료');</script>";
?>

2. config.php

<?php
include_once("_common.php");
 
if(strpos($config['cf_editor'], 'ckeditor') === false ){
exit;
}
 
// ---------------------------------------------------------------------------
 
# 이미지가 저장될 디렉토리의 전체 경로를 설정합니다.
# 끝에 슬래쉬(/)는 붙이지 않습니다.
# 주의: 이 경로의 접근 권한은 쓰기, 읽기가 가능하도록 설정해 주십시오.
 
# data/editor 디렉토리가 없는 경우가 있을수 있으므로 디렉토리를 생성하는 코드를 추가함. kagla 140305
 
@mkdir(G5_DATA_PATH.'/'.G5_EDITOR_DIR, G5_DIR_PERMISSION);
@chmod(G5_DATA_PATH.'/'.G5_EDITOR_DIR, G5_DIR_PERMISSION);
 
$ym = date('ym', G5_SERVER_TIME);
 
$data_dir = G5_DATA_PATH.'/'.G5_EDITOR_DIR.'/'.$ym;
$data_url = G5_DATA_URL.'/'.G5_EDITOR_DIR.'/'.$ym;
 
define("SAVE_DIR", $data_dir);
 
@mkdir(SAVE_DIR, G5_DIR_PERMISSION);
@chmod(SAVE_DIR, G5_DIR_PERMISSION);
 
# 위에서 설정한 'SAVE_DIR'의 URL을 설정합니다.
# 끝에 슬래쉬(/)는 붙이지 않습니다.
 
define("SAVE_URL", $data_url);
 
functioncke_get_user_id ()
{
    @session_start();
returnsession_id();
}
 
functioncke_get_file_passname ()
{
$tmp_name = cke_get_user_id().$_SERVER['REMOTE_ADDR'];
$tmp_name = md5(sha1($tmp_name));
return$tmp_name;
}
 
functioncke_generateRandomString ($length = 4)
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyz';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString.=$characters[rand(0, $charactersLength - 1)];
    }
return$randomString;
}
 
functioncke_replace_filename ($filename)
{
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$random_str = cke_generateRandomString(4);
$passname = cke_get_file_passname();
$file_arr = date("YmdHis", time());
return$file_arr.'_'.$passname.'_'.$random_str.'.'.$ext;
}
?>

답변 1개

채택된 답변
+20 포인트

upload.php의 move_uploaded_file($tempfile, $savefile);

부분이 서버로 파일을 올리는 부분입니다. 

config.php에서 정의된 

$data_dir = G5_DATA_PATH.'/'.G5_EDITOR_DIR.'/'.$ym;

$data_url = G5_DATA_URL.'/'.G5_EDITOR_DIR.'/'.$ym;

의 폴더가 쓰기권한이 있나요?

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고