Snoopy.class 를 이용한 외부이미지 파일 저장 관련 질문입니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

Snoopy.class 를 이용한 외부이미지 파일 저장 관련 질문입니다. 정보

Snoopy.class 를 이용한 외부이미지 파일 저장 관련 질문입니다.

본문

안녕하세요
alik님의 아래 소스를 이용하여 글쓰기 저장 시 외부이미지 저장하기 기능을 시험중입니다.
하나 문제가 있는데요 찾지를 못하겠네요..흠

문제는 아래와 같습니다.

네이버의 이미지 링크나 아래와 같이 정상적인 이미지 링크는 아주 잘 됩니다.

http://blogfiles.naver.net/20100821_15/cacci95_12823614363477nxGa_jpg/iphone_0_cacci95.jpg

하지만 본문의 글을 긁어서 복사를 했을때는 아래와 같이  .jpg 끝에 ?type=w3 이라는 부분이 붙어있거나

http://postfiles16.naver.net/20100821_15/cacci95_12823614363477nxGa_jpg/iphone_0_cacci95.jpg?type=w3

아래같이 ?type=w740 이라는 부분이 붙어 있으면 이미지 저장이 안되는걸 발견했습니다..ㅠㅠ

http://cafeptthumb2.phinf.naver.net/20111121_105/bks3190_1321880454486UKmn5_jpg/dsc02202_bks3190.jpg?type=w740

정상적으로 저장이 안되니 url치환해서 저장하는 부분도 안되구요

또한 다음 같은 경우 아래같은 방법으로 이미지 링크를 시키는데요

http://cfile287.uf.daum.net/image/185D9F554E31F7A51F88BD

이런경우 이미지도 다운받지 못하고 링크도 아래처럼 만들어 버리더라구요
29_01_22_1137095838.net/image/ 이부분이 추가 되어버리더라구요

http://www.eeeee.co.kr/remoteImages/2011_11/29_01_22_1137095838.net/image/191e54544e31f7941bce8f

방긋님이 올린 아래 링크의 소스로는 이런경우 아래와 같이 링크를 만들어서 잘 보이고 있습니다.

http://www.sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=21620&sca=&sfl=mb_id%2C1&stx=seanextsky

http://www.eeee.co.kr/gnuboard4/data/cheditor4/1111/207DDA4C4E0935202B7AF0_oONQsvTyR26W3

혹시 이 문제를 해결하려면 아래 소스에서 어떤부분을 수정해줘야 하는지 아는분이 계실련지요?
아래는 alik님의 소스 입니다.

<?PHP
// made by alik

function saveRemoteImage($str) {

$myRootPath = '/APM_Setup/htdocs/'; // 서버 root 의 절대경로 (끝에 / 필수!)
$myDomain = 'localhost'; // 본인 도메인  (자기도메인에서 삽입된 이미지는 저장하지 않기 위하여)
$imgSavedir = 'remoteImages'; // 저장될 폴더의 이름 (루트에 생성하고 권한은 777 로 준다)
$myemail = "*** 개인정보보호를 위한 이메일주소 노출방지 ***"; //싸이월드 로그인용 이메일주소
$mypass = 'aaaa'; // 싸이월드 로그인용 비밀번호

include_once "Snoopy.class.php";
$content = '';

$str = stripslashes($str);

$imgPattern = "/<img.+?src=(.[^\s\>]+)/si";


preg_match_all($imgPattern,$str,$match, PREG_SET_ORDER);

if(count($match) > 0) {
$match = multi_unique($match);
}

foreach($match as $value) {

    $url =$value[1];
    $url = preg_replace("/(\"|\'|\\\)/","",$url);

if((strpos(strtolower($url), "http") === false) || (strpos(strtolower($url), strtolower($myDomain)) !== false)) {
continue;
}

if( strpos($url, "cyimg") !== false )
{
$snoopy = new Snoopy;
$snoopy ->referer = "http://cyworld.nate.com";
$submit_url = "http://cyxso.cyworld.nate.com/login.jsp";

$vars['myemail'] = $myemail;
$vars['mypasswd'] = $mypass;
$vars['return_domain'] = 'minihp.cyworld.nate.com';
$vars['pop'] = 'ok';
$vars['dest'] = 'http://cyworld.nate.com';

if ($snoopy -> submit($submit_url, $vars))
{
if (!strstr($snoopy -> results, "sDest")) 
{
continue;
} else {
if ($snoopy -> fetch($url)) {
$content = $snoopy -> results;
} else {
continue;
}
}
} else {
continue;
}
}
else
{
$parsedUrl = parse_url($url);
$snoopy = new Snoopy;
$snoopy ->referer = $parsedUrl['scheme'].$parsedUrl['host'];
if($snoopy -> fetch($url)) {
$content =  $snoopy -> results;
} else {
continue;
}
}

$newPath = $myRootPath.$imgSavedir."/";

$newPath .= date("Y_m")."/";
if(!is_dir($newPath)) {
mkdir($newPath, 0777);
chmod($newPath, 0777);
}

(strrchr($url, "."))?
$file_ext = ".".strtolower(substr(strrchr(urldecode($url), "."),1)) :
$file_ext = '';

$filename = $newPath.date("d_H_i_").mt_rand() .$file_ext;

$newFile = fopen($filename,"wb");
fwrite($newFile,$content);
fclose($newFile);

$newUrl = str_replace($myRootPath, '/', $filename);
$newTag = str_replace($value[1], "\"".$newUrl."\"", $value[0]);
$str = str_replace($value[0], $newTag, $str);
}

$str = addslashes($str);

Return $str;
}



function deleteRemoteImage($str) {

$myRootPath = '/APM_Setup/htdocs/'; // 서버 root 의 절대경로 (끝에 / 필수!)
$imgSavedir = 'remoteImages'; // 저장될 폴더의 이름 (루트에 생성하고 권한은 777 로 준다)

$str = stripslashes($str);

$imgPattern = "/<img.+?src=(.[^\s\>]+)/si";

preg_match_all($imgPattern,$str,$match, PREG_SET_ORDER);

if(count($match) > 0) {
$match = multi_unique($match);
}

foreach($match as $value) {
    $url =$value[1];
    $url = preg_replace("/(\"|\'|\\\)/","",$url);
$imagePath = $myRootPath . strstr($url, $imgSavedir);
@unlink($imagePath);
$folderPath = substr($imagePath, 0, strrpos($imagePath, "/"));

if ($handle = opendir($folderPath)) {
$filecount = 0;
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$filecount ++ ;
}
}
closedir($handle);
if($filecount == 0) {
rmdir($folderPath);
}
}
}
}


function multi_unique($array) {
foreach ($array as $k=>$na)
$new[$k] = serialize($na);
$uniq = array_unique($new);
foreach($uniq as $k=>$ser)
$new1[$k] = unserialize($ser);
return ($new1);
}

// made by alik
?>

댓글 전체

전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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