본문 바로가기

Programming

[smartEditor] 네이버 스마트에디터 업로드 이미지 파일명 변경하기

하아...또 백만년만에 쓰는 프로그래밍 포스팅..

하는거 별로 없는거 같은데 생각해보면 나 회사에서 할꺼 많음 ㅇㅇ.

지난달이랑 이번달이랑 월초에 사이트랑 모바일웹 리뉴얼 때문에 너무 정신이 없다.ㅜㅜ

수정사항들이 미친듯이 쏟아져 나온다ㅠㅜ 우왕ㅋ굳ㅋ


요즘은 글을 작성할 때 거의 네이버 스마트에디터를 끌어와서 게시물을 올리는데,

그대로 끌어와서 쓰는거까진 좋으나...문제가 생겼다

바로 사용자들이 이미지를 업로드 할 때의 파일명.ㅜㅜ

예를들어, A라는 사람이 123.jpg라는 이미지를 업로드하고 글을 쓴다.

그럼 123.jpg라는 이미지가 웹상에 등록이 되는데,

문제는 B라는 사람도 다른이미지를 똑같은 파일명인 123.jpg라고 업로드 하면서 생긴다.

B가 올린 123.jpg 파일이 웹상에 이미 등록되있는 파일명과 똑같으므로,

B의 이미지가 A의 이미지를 덮어써버리게 되는것!

그렇게 되면 A가 작성한 글에 B가 올린 이미지가 뜨는 요상한 상황이 발생.ㅜㅜ


파일업로드로 이미지를 올릴때는 중복되는 파일명이 나오지않도록 hash함수로 파일명 중복을 막아놨었는데,

에디터로 넘어오니 똑같은거 같으면서도 순간 어떻게 처리해야되지? 하고 멘붕.


오전엔 다른 업무들 때문에 정신없다가 오후되서야 내내 이걸로 끙끙거리다가 나름의 방법을 찾았다.

울 과장님이 보면 왜이렇게 처리했냐고 구박줄 완전 개노가다의 방법.=_+

나년의 한계는 여기까지인가봉가.


에디터가 있는 폴더속에 photo_uploader/popup/file_uploader.php & photo_uploader/popup/file_uploader_html5.php

두개의 파일을 열어준다. (각각 html5용과 그렇지않은 버전의 파일이므로 두개다 수정해줘야한다.)


photo_uploader/popup/file_uploader.php


// SUCCESSFUL <-일단 파일업로드 성공!


if(bSuccessUpload) {

$tmp_name = $_FILES['Filedata']['tmp_name'];

$name = $_FILES['Filedata']['name'];

$wdate = time();


$filename_ext = strtolower(array_pop(explode('.',$name)));


$allow_file = array("jpg", "png", "bmp", "gif");


$upFile = "aaa".$name[0].$wdate;  //임의의 파일명(파일확장자제외한)을 만들어줌


if(!in_array($filename_ext, $allow_file)) {  //등록된 파일의 확장자 검사


$url .= '&errstr='.$upFile;


} else {


$uploadDir = '../../upload/';

if(!is_dir($uploadDir)){

mkdir($uploadDir, 0777);  //폴더가 없으면 생성해 줄 것!

}

$newPath = $uploadDir.urlencode($upFile.".".$filename_ext);  //새로 생성된 파일의 경로

@move_uploaded_file($tmp_name, $newPath);  //tmp경로에도 파일을 추가해줌


img_limit_resize($newPath,680);  //이미지사이즈 제한


//이미지경로가 출력될 태그부분(textarea안)

$url .= "&bNewLine=true";

$url .= "&sFileName=".urlencode(urlencode($upFile.".".$filename_ext));

$url .= "&sFileURL=http://~파일경로~/Editor/upload/".urlencode(urlencode($upFile.".".$filename_ext));


}

}

// FAILED

else {

$url .= '&errstr=error';

}


photo_uploader/popup/file_uploader_html5.php


$file = new stdClass;

$file->name = rawurldecode($headers['file_name']);

$file->size = $headers['file_size'];

$file->content = file_get_contents("php://input");


$wdate = time();


$filename_ext = strtolower(array_pop(explode('.',$file->name)));

$allow_file = array("jpg", "png", "bmp", "gif"); 

$upFile = "aaa".$file->name[0].$wdate;

if(!in_array($filename_ext, $allow_file)) {


echo "NOTALLOW_".$file->name;

} else {


$uploadDir = '../../upload/';

if(!is_dir($uploadDir)){

mkdir($uploadDir, 0777);

}

$newPath = $uploadDir.iconv("utf-8", "cp949", $upFile.".".$filename_ext);

if(file_put_contents($newPath, $file->content)) {

$sFileInfo .= "&bNewLine=true";

$sFileInfo .= "&sFileName=".$upFile.".".$filename_ext;

$sFileInfo .= "&sFileURL=http://~파일경로~/Editor/upload/".$upFile.".".$filename_ext;

}

echo $sFileInfo;


}


파일수정하고 에디터에 이미지를 등록해보면~






이렇게 보니 간단한 것을..나는 이거에 목을 매달고 오후업무의 80퍼를 쏟아부었다. 쒜뜨

머리가나쁘면 손발이 고생하는건 진리였어lol!!!!


내가 헤매고 어리버리 멘붕했던 이유를 생각해보니 php 함수를 아직 많이 익히지 못해서 인듯...

아아.. 주말엔 공부를 해야하나.ㅜㅜ

근데 나 또 이번주말에 꽃놀이 갈껀데잉. 망해따.ㅋㅋㅋㅋㅋㅋ


내가 여기서 헤맸던 php함수들은 따로 정리해서 포스팅 고고!