외부 url 이미지 다운로드 copy( ) 기능 작동 안함
본문
안녕하세요
외부 썸네일을 원본을 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도 그렇고
if (file_exists($file)) {
copy($img, $filepath);
}
이렇게 해보세요
우선 에러메세지를 본다면 이렇습니다. 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)) {
@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 파일에 적절한 위치에 추가하시면 될것으로 생각합니다.
!-->item/id 폴더에 다운로드하여, 썸네일을 생성
-> 다운로드 하시는 부분을 체크하셔야 할듯 합니다. 현재 에러는 생성할 파일이 없다는 것 입니다.