외부 이미지 저장에 대한 문의
본문
안녕하세요?
외부 이미지의 절대경로를 가지고 홈페이지에 이미지로 저장하는 프로그램을 만들어 보려고 합니다.
그런데 시작하자마다 2가지가 막히네요. ;;
1. 이미지가 원격지에 있습니다.
2. 이미지의 확장자가 없습니다. (확장자는 jpg 인데 확장자를 제거한거 같습니다)
아래 경로가 이미지 경로의 샘플입니다.
고수님들 의견 부탁드려요~
답변 3
$url = 'http://cdn1.domeggook.com/upload/item/2017/07/13/1499927872F5D7BA117104BB1BE9FDB0/1499927872F5D7BA117104BB1BE9FDB0_img_760?hash=ac9384bdfb6e7ecb1226466523d3ce85';
// 이미지 형식 체크
// https://www.php.net/manual/en/function.getimagesize.php
$gis = @getimagesize($url);
if ($gis != false && is_numeric($gis[2]) == true) {
// 파일명 얻기
// https://www.php.net/manual/en/function.pathinfo
$path = pathinfo($url);
$fname = $path['basename'];
$fname_querypos = strpos($fname, '?');
if ($fname_querypos !== false) {
$fname = substr($fname, 0, $fname_querypos);
}
// 확장자 얻기
// https://www.php.net/manual/en/function.image-type-to-extension.php
$ext = image_type_to_extension($gis[2]);
// 전체경로 얻기
$fullpath = __DIR__ . DIRECTORY_SEPARATOR . $fname . '.' . $ext;
// 다운로드
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
if ($data == false || curl_errno($ch) > 0) {
echo curl_errno($ch) . ': ' . curl_error($ch);
} else {
if (file_put_contents($fullpath, $data) === false) {
echo 'error occurred';
}
}
curl_close($ch);
} else {
echo 'wrong image';
}
?>
알려주신 소스코드로 업로드해서 테스트해봤는데 저장이 안되네요. ㅠ
구누보드 사용시 data 폴더에 저장하려고 하는데 어떤 부분이 잘못건까요?
다시한번 해보겠습니다^^
답변을 작성하시기 전에 로그인 해주세요.