그누보드에 있는 스마트 에디터를 일반 사이트에 적용할때 이미지 업로드 문제

그누보드에 있는 스마트 에디터를 일반 사이트에 적용할때 이미지 업로드 문제

QA

그누보드에 있는 스마트 에디터를 일반 사이트에 적용할때 이미지 업로드 문제

본문

먼저 file_uploader.php 을 아래와 같이 수정하고


// default redirection
 
$url = $_REQUEST["callback"].'?callback_func='.$_REQUEST["callback_func"];
 
$bSuccessUpload = is_uploaded_file($_FILES['Filedata']['tmp_name']);
 
 
$data_dir = "mydir";
$data_url = "myurl";
 
 
// SUCCESSFUL
 
if(bSuccessUpload) {
	$tmp_name = $_FILES['Filedata']['tmp_name'];
	$name = $_FILES['Filedata']['name'];
	
 
	$filename_ext = strtolower(array_pop(explode('.',$name)));
 
 
	
 
	if (!preg_match("/(jpe?g|gif|bmp|png)$/i", $filename_ext)) {
 
		$url .= '&errstr='.$name;
 
	} else {
 
		
        $file_name = sprintf('%u', ip2long($_SERVER['REMOTE_ADDR'])).'_'.time().".".$filename_ext;
		$save_dir = sprintf('%s/%s', $data_dir, $file_name);
        $save_url = sprintf('%s/%s', $data_url, $file_name);
		
		@move_uploaded_file($tmp_name, $save_dir);
		
		$url .= "&bNewLine=true";
		$url .= "&sFileName=".$name;
		$url .= "&sFileURL=".$save_url;
 
	}
}
// FAILED
else {
	$url .= '&errstr=error';
}
	
header('Location: '. $url); 

 

다음 file_uploader_html5.php 파일을 아래와 같이 수정하였습니다.

 


$data_dir = "mydir";
$data_url = "myurl"; 
 
 
 	$sFileInfo = '';
 
	$headers = array();
 
	 
 
	foreach($_SERVER as $k => $v) {
		if(substr($k, 0, 9) == "HTTP_FILE") {
			$k = substr(strtolower($k), 5);
			$headers[$k] = $v;
		} 
	}
	
	$file = new stdClass;
	//$file->name = str_replace("\0", "", rawurldecode($headers['file_name']));
    $file->name = str_replace("\0", "", rawurldecode($headers['file_name']));
	$file->size = $headers['file_size'];
	$file->content = file_get_contents("php://input");
 
	
 
	$filename_ext = strtolower(array_pop(explode('.',$file->name)));
 
    if (!preg_match("/(jpe?g|gif|bmp|png)$/i", $filename_ext)) {
        echo "NOTALLOW_".$file->name;
        exit;
    }
    
 
	//$file_name = iconv("utf-8", "cp949", $file->name);
    $file_name = sprintf('%u', ip2long($_SERVER['REMOTE_ADDR'])).'_'.time().".".$filename_ext;
    $newPath = $data_dir."/".$file_name;
    $save_url = sprintf('%s/%s', $data_url, $file_name);
 
    if(file_put_contents($newPath, $file->content)) {
        $sFileInfo .= "&bNewLine=true";
        $sFileInfo .= "&sFileName=".$file->name;
        $sFileInfo .= "&sFileURL=".$save_url;
    }
    
    echo $sFileInfo; 

 

그리고 php폴더에 있는 index.php 파일을 아래와 같이 수정하였습니다.

 


/*
 * jQuery File Upload Plugin PHP Example 5.14
 * https://github.com/blueimp/jQuery-File-Upload
 *
 * Copyright 2010, Sebastian Tschan
 * https://blueimp.net
 *
 * Licensed under the MIT license:
 * http://www.opensource.org/licenses/MIT
 */
include_once("./_common.php");
@include_once("./JSON.php");


if( !function_exists('json_encode') ) {
    function json_encode($data) {
        $json = new Services_JSON();
        return( $json->encode($data) );
    }
}


@ini_set('gd.jpeg_ignore_warning', 1);
$data_dir = "mydir";
$data_url = "myurl";

require('UploadHandler.php');
$options = array(
    'upload_dir' => $data_dir,
    'upload_url' => $data_url,
    // This option will disable creating thumbnail images and will not create that extra folder.
    // However, due to this, the images preview will not be displayed after upload
    'image_versions' => array()
);


$upload_handler = new UploadHandler($options);

 

결론적으로 3개의 파일속 소스에서 $data_dir , $data_url 의 경로만 바꾼상태입니다.

 

그리고 사진 업로드 테스트 하면 해당 경로에 파일은 정상적으로 올라가는 상태입니다.

 

그러나 화면에는 아래와 같은 에러가 나네요

 

 dc70e8ecfdc0db0727c208b0143b2631_1426604000_125.png 

 

 

그누보드가 아닌 다른 일반 사이트에 쓸려면 또 수정해야되는 파일이 있는지요?

버전이라든지 알라봐야 할 부분좀 알려주시면 감사하겠습니다.

 

집에 가고 싶습니다. ㅠㅠ

 

이 질문에 댓글 쓰기 :

답변 3

http://lovelydoll.tistory.com/35 

 

참고해 보시구요..

기억으로는 실제업로드는 

UploadHandler.php

에서 실행되는거로 알고 있습니다.

 

개발자도구 네트워크 탭열어놓으시고 테스트해보세요

화면에 나오지 않는 에러가 보일수도 있습니다.

 

네이버 스마트에디터는

그누에서 시작된게 아니기 때문 에러부분 캐치되시면 검색통해 해결하실 수 있으세요..

 

그나저나...아직도 집에 못가시면..ㅜ.ㅜ

집에 들어가셔서 쉬시고 내일 해결하시는게 빠를수도 있습니다....

그누보드5 배포에 포함된 스마트에디터의 사진 첨부하기 창은 네이버에서 배포하는 소스랑 틀립니다.

 

사진 올리는 부분은

https://github.com/blueimp/jQuery-File-Upload 에서 배포하는 것을 조금 수정해서 만든거에요.

 

위 스샷의 사진 첨부하기 창의 파일첨부를 수정하실려면,

 

php폴더에 있는 index.php, UploadHandler.php​ 를 수정하시면 됩니다.

 

file_uploader.php, file_uploader_html5.php 는 사용하고 있지 않습니다.( 위의 파일첨부창과 아무런 상관이 없음 )

 

$data_dir = "mydir";

 

$data_url = "myurl"; 

 

위의 $data_dir​ 은 절대 경로로 적어주시는게 좋습니다. ( 쓰기 권한 주셔야 합니다 )

예) /home/내계정/www/파일저장되는폴더/

 

$data_url 은 ​url 형식으로 해줘야 합니다.

예) http://www.도메인.com/파일저장되는폴더/

 

답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT