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

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

QA

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

답변 4

본문

안녕하세요 

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


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

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

 


function get_it_thumbnail($img, $width, $height=0, $id='', $is_crop=false)
{
 
$file = G5_DATA_PATH.'/item/'.$img;
    $filepath = G5_DATA_PATH.'/item/';
    if (file_exists($img)) {
            copy($img, $filepath);
        }

 

계속 다음과 같은 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

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"라고 나와있는데, 이는 복사하려는 원본 파일이나 대상 폴더가 존재하지 않다고 볼 수 있습니다.

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


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)) {
            ($filepath, G5_DIR_PERMISSION);
            @chmod($filepath, G5_DIR_PERMISSION);
        }
        
        $file = $filepath.basename($img);
        ($img, $file);
        
        if (file_exists($file)) {
            @chmod($file, G5_FILE_PERMISSION);
            
            // 이후에 썸네일 생성 등의 로직을 추가
        } else {
            // 파일 복사에 실패한 경우 예외 처리
            echo "파일 복사에 실패했습니다.";
        }
    } else {
        // 원본 파일이 존재하지 않을 경우, 예외 처리
        echo "원본 파일이 존재하지 않습니다.";
    }
}

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

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

답변을 작성하시기 전에 로그인 해주세요.
전체 2
© SIRSOFT
현재 페이지 제일 처음으로