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

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

Copy
// 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; 	}}// FAILEDelse {	$url .= '&errstr=error';}	header('Location: '. $url);

 

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

 

Copy
$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 파일을 아래와 같이 수정하였습니다.

 

Copy
/* * 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개 / 댓글 4개

안녕하세요? 해결하셨나요? 저도 동일한 부분 진행중인데 서로 도움이 될까해서요

그누보드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/파일저장되는폴더/

 

답변에 대한 댓글 2개

답글 고맙습니다.

UploadHandler.php 보니 뭔가 어려워 어딜 수정해야될지 감이 안오네요 ㅠ

혹시 건드려봐야할 라인이나 함수부분 알려주시면 감사하겠습니다.
UploadHandler.php​ 에서
protected function handle_file_upload <<< 파일저장처리 함수인데요. 여기서 파일 저장이 잘 되는지 관련값은 잘 리턴 되는지 디버깅 해 보세요.

http://lovelydoll.tistory.com/35 

 

참고해 보시구요..

기억으로는 실제업로드는 

UploadHandler.php

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

 

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

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

 

네이버 스마트에디터는

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

 

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

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

답변에 대한 댓글 2개

답글 감사합니다. 많은 위로가 되었네요.

일단 다시한번 삽질 해봐야 겠네요 ㅠ
포인트가 모자라서 쪽지가 안보내지네요.

hoyaf79@naver.com 입니다.

감사합니다.

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