채택완료

업로드 이미지/외부 이미지, 또는 무 이미지에 따라 썸네일 처리

변태스타킹 님의 

외부 이미지 썸네일 최신글 갤러리

https://sir.kr/g5_skin/28685

소스를 웹진게시판에서 고맙게도 잘 쓰고 있습니다.

 

이걸 이용해서 이미지가 있기도 하고 없기도 한 뉴스 형식의 게시판을 따로 만들려고 합니다.

 

업로드한 이미지가 있을수도 있고,

외부 이미지가 링크 된 경우도 있고,

아예 이미지가 없는 경우도 있는데,

 

이미지가 없는 경우는 꼭 이 부분에서 에러가 나는군요.

if (!file_exists($file_download)) {

        copy($src, $file_download);

 

이미지가 없는 겅우에도 이미지가 없는대로 이미지를 표시하지 않고 사용할수 있도록 좀 도와주십시오.

 

아래는 변태스타킹님의 소스입니다.

 

Copy
<?php

for ($i=0; $i<count($list); $i++) {

$thumb = get_list_thumbnail($bo_table, $list[$i]['wr_id'], $thumb_width, $thumb_height, false, true);

if($thumb['src']) {

    $img = $thumb['src'];

    

// 외부 이미지 썸네일 만들기 {

} else if($url_img = get_editor_image($list[$i]['wr_content'])) { 

    $img_src = $url_img[1][0];

    preg_match("/src=[\'\"]?([^>\'\"]+[^>\'\"]+)/i", $img_src, $m);

    $src = htmlspecialchars_decode($m[1]);

    preg_match("/alt=[\"\']?([^\"\']*)[\"\']?/", $img_src, $m);

    $alt = get_text($m[1]);        

    $filename = hash("sha256", $src);

    $source_path = $target_path = G5_DATA_PATH.'/file/'.$bo_table;

    $file_download = $target_path."/".$filename;

    if (!file_exists($file_download)) {

        copy($src, $file_download);

    }                                        

    $thumb_src = thumbnail($filename, $source_path, $target_path, $thumb_width, $thumb_height, false, true);

    $img = G5_DATA_URL.'/file/'.$bo_table.'/'.$thumb_src;

    $thumb['alt'] = $alt;

// } 외부 이미지 썸네일 만들기

    

} else {

    $img = G5_IMG_URL.'/no_img.png';

    $thumb['alt'] = '이미지가 없습니다.';

}

$img_content = '<img src="'.$img.'" alt="'.$thumb['alt'].'" >';

?>

답변 1개 / 댓글 3개

채택된 답변
+20 포인트

참조 : https://sir.kr/so_cat

Copy
if (!file_exists($file_download)) {

        copy($src, $file_download);

} else {

        copy($default_src, $file_download);

}

답변에 대한 댓글 3개

조언해주셔서 감사합니다.

그런데, 이미지가 아예 없는 경우는 여전히

Warning: copy(): Filename cannot be empty in /storage/emulated/0/htdocs/gym5/skin/board/basic_zine/list.skin.php on line 80

라는 에러 메시자가 나오네요.
지적된 라인이 이 부분입니다.

copy($src, $file_download);

좋은 방법이 없을까요?
죄송합니다. 이부분은 다운로드 관련 부분이네요..

$img_src 가 "" 이면 $img_src에 디폴트 이미지를 넣어 보세요..

상세한 것은 디버깅으로 각 변수를 찍어 보시는 것을 추천드립니다
거듭된 조언 감사합니다.
오직 스스로의 역부족을 실감하고 있습니다.

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