아무 에디터에 base64 이미지 가져오면 png로 저장하여 주는 거
아직 미완성입니다. (9/2 업데이트)
원리는 게시물을 전송할때 에디터내용중 base64 로 들어가는 걸 찾아서
서버에 저장하는 원리입니다.
/extend/user.config.php
[code]
function base64_to_file($base64_string, $extension) {
$ym = date('ym', G5_SERVER_TIME);
$data_dir = G5_DATA_PATH.'/editor/'.$ym;
$data_url = G5_DATA_URL.'/editor/'.$ym;
if(!is_dir($data_dir)) {
@mkdir($data_dir, G5_DIR_PERMISSION);
@chmod($data_dir, G5_DIR_PERMISSION);
}
$filename = basename($path);
$chars_array = array_merge(range(0,9), range('a','z'), range('A','Z'));
shuffle($chars_array);
$shuffle = implode('', $chars_array);
$file_name = abs(ip2long($_SERVER['REMOTE_ADDR'])).'_'.substr($shuffle,0,8).'_'.replace_filename($filename);
$save_dir = sprintf('%s/%s', $data_dir, $file_name.".".$extension);
$save_url = sprintf('%s/%s', $data_url, $file_name.".".$extension);
// open the output file for writing
$ifp = fopen( $save_dir, 'wb' );
// split the string on commas
// $data[ 0 ] == "data:image/png;base64"
// $data[ 1 ] == <actual base64 string>
$data = explode( ',', $base64_string );
// we could add validation here with ensuring count( $data ) > 1
fwrite( $ifp, base64_decode( $data[ 1 ] ) );
// clean up the file resource
fclose( $ifp );
return $save_url;
}
function base64_content_image($content) {
if(!$content) return;
$content = stripslashes($content);
$pattern = "#data:image/(gif|png|jpeg);base64,([\w=+/]++)#";
preg_match($pattern, $content, $match);
while(isset($match[0]))
{
// 이미지 데이터
$imgdata = $match[0];
// 확장자
$extension = explode(";", explode("/", $match[0])[1])[0];
$image = base64_to_file($imgdata, $extension);
//$image = "<p><img src='".$image."'></p>";
if ($image) {
$content = str_replace($match[0], $image, $content);
}
}
$content = addslashes($content);
return $content;
}
[/code]
자신이 사용하는 게시판 스킨
write_update.head.skin.php
열고
[code]
$wr_content = base64_content_image($wr_content);
[/code]
저장해주세요.
프로젝트가 있어서 만들다 말았는데.. 능력자분께서완성해주시면 감사하겠습니다.
댓글 4개
첨부파일 관련 코드는 아니구요.
파일업로드시 그 파일이 진짜 jpg 인지 진짜 gif 인지 진짜 png 인지 판별해서 이 3개중 하나가 아니라면 튕겨내고 이 3개 중 하나일 경우에만 업로드를 하는 코드에요.
예를 들어 mp3 파일의 경우도 확장자만 jpg 로 바꿔 올릴 수 있으니까요.
또 원래는 png 인데 확장자를 jpg 로 올릴 때에도 확장자를 바로잡아 주는 코드까지 넣어놓았구요.
음 저 같으면 에디터이미지라면 write_업데이트.php 로 넘어가기 이전에 아작스로 이미지를 업뎃시키는 방법을 사용했을 것 같아요.
onpaste 나 onkeyup 이벤트에서 G5_URL 이 경로의 대가리 문자열이 아닌 이미지라면 ajax 파일업로드 문서로 보냈다가 그 아작스문에서 생성된 주소를 데이터로 받아 이미지경로를 replace 하는 방식으로요.
단지 에디터마다 replace 하는 함수가 달라서 사용하는 에디터에 따라 그 부분은 개별적용을 해야 되겠죠.
게시판 목록
그누보드5 팁자료실
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 공지 | 3년 전 | 4402 | ||
| 2184 | 3년 전 | 3316 | ||
| 2183 | 3년 전 | 2458 | ||
| 2182 | 3년 전 | 4743 | ||
| 2181 | 3년 전 | 2332 | ||
| 2180 | 3년 전 | 2053 | ||
| 2179 | 3년 전 | 1874 | ||
| 2178 | 3년 전 | 3107 | ||
| 2177 | 3년 전 | 1878 | ||
| 2176 |
|
3년 전 | 2551 | |
| 2175 | 3년 전 | 1698 | ||
| 2174 | 3년 전 | 2695 | ||
| 2173 | 3년 전 | 2431 | ||
| 2172 | 3년 전 | 2369 | ||
| 2171 | 3년 전 | 3151 | ||
| 2170 |
와칸다포에버
|
3년 전 | 2096 | |
| 2169 | 3년 전 | 2902 | ||
| 2168 | 3년 전 | 2299 | ||
| 2167 | 3년 전 | 2711 | ||
| 2166 | 3년 전 | 1726 | ||
| 2165 |
|
3년 전 | 2101 | |
| 2164 |
와칸다포에버
|
3년 전 | 2214 | |
| 2163 | 3년 전 | 3320 | ||
| 2162 | 3년 전 | 3918 | ||
| 2161 | 3년 전 | 3204 | ||
| 2160 | 3년 전 | 2344 | ||
| 2159 | 3년 전 | 6170 | ||
| 2158 | 3년 전 | 3314 | ||
| 2157 | 3년 전 | 3413 | ||
| 2156 |
멀티트리플
|
3년 전 | 1987 | |
| 2155 |
|
3년 전 | 3110 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기