테스트 사이트 - 개발 중인 베타 버전입니다

외부 url 이미지 다운로드 copy( ) 기능 작동 안함

종결자 2년 전 조회 1,609

안녕하세요 

외부 썸네일을 원본을 item/id 폴더에 다운로드하여, 썸네일을 생성하고자 get_it_thumbnail 함수를 수정하고 있습니다. 


아래처럼 외부 썸네일 URL 을 해당 item 폴더에 copy 하도록 지정하였는데요.

현재 $img 에는 외부 썸네일 URL 이 들어가 잇는 형태입니다. 

 

</strong></p>

<p>function get_it_thumbnail($img, $width, $height=0, $id='', $is_crop=false)

{</p>

<p> </p>

<p>$file = G5_DATA_PATH.'/item/'.$img;

    $filepath = G5_DATA_PATH.'/item/';</p>

<p>    if (file_exists($img)) {

            copy($img, $filepath);

        }

<strong>

 

계속 다음과 같은 warning 이 뜹니다. 

 

Warning: copy(C:/xampp/htdocs/x4/data/item/): Failed to open stream: No such file or directory in C:\xampp\htdocs\x4\lib\shop.lib.php on line 518

 

분명 폴더는 존재하는데, 왜 저러한 경고가 뜨는지 모르겠습니다.

 

고수분들의 조언 부탁드립니다 ㅜㅜ! 

감사합니다!

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

답변 4개

M
2년 전

item/id 폴더에 다운로드하여, 썸네일을 생성

-> 다운로드 하시는 부분을 체크하셔야 할듯 합니다. 현재 에러는 생성할 파일이 없다는 것 입니다.

로그인 후 평가할 수 있습니다

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

2년 전

1. 외부 이미지 대상으로 file_exists 사용 못합니다

2. copy($img, $filepath); <-- 복사해 올 이미지 저장 이름이 없네요

 따라서 if문 제거 및 copy($img, $filepath."/화일명");

 

그런데 질문의 에러가. 나온다는 것은 file_exists가 작동한다는 말인데 외부이미지라는 말이 이상한데요?

외부이미지라면 http://ABC.com/img.jpg 이런 형태가 아닌가요?

$file의 화일명에 $img도 그렇고

 

 

 

로그인 후 평가할 수 있습니다

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

우선 에러메세지를 본다면 이렇습니다. No such file or directory"라고 나와있는데, 이는 복사하려는 원본 파일이나 대상 폴더가 존재하지 않다고 볼 수 있습니다.

아래의 예시를 참고해 보시면 어떨까 합니다.

</p>

<p>function get_it_thumbnail($img, $width, $height=0, $id='', $is_crop=false)

{

    $filepath = G5_DATA_PATH.'/item/';

    

    if (file_exists($img)) {

        if (!file_exists($filepath)) {

            @mkdir($filepath, G5_DIR_PERMISSION);

            @chmod($filepath, G5_DIR_PERMISSION);

        }

        

        $file = $filepath.basename($img);

        @copy($img, $file);

        

        if (file_exists($file)) {

            @chmod($file, G5_FILE_PERMISSION);

            

            // 이후에 썸네일 생성 등의 로직을 추가

        } else {

            // 파일 복사에 실패한 경우 예외 처리

            echo "파일 복사에 실패했습니다.";

        }

    } else {

        // 원본 파일이 존재하지 않을 경우, 예외 처리

        echo "원본 파일이 존재하지 않습니다.";

    }

}

우선 파일과 폴더의 퍼미션을 설정후  썸네일 생성관련 로직을 추가하면 원하시는 결과를 얻으실수 있으실것 같습니다.

lib/shop.lib.php 파일에 적절한 위치에 추가하시면 될것으로 생각합니다.

로그인 후 평가할 수 있습니다

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

if (file_exists($file)) {
   copy($img, $filepath);
}

 

이렇게 해보세요

로그인 후 평가할 수 있습니다

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

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

로그인