페이지 링크 서비스 제작 및 기타 페이지 공유 서비스 제작시
ogg tag와 함께 이미지도 함께 가져와야 할 때가 있습니다.
단순히 해당 페이지의 오리지널 이미지 링크를 저장하는 방법도 있지만, 아무래도 이미지는 자체 서버에 저장을 해 놓아야 이미지 삭제나 변경시 별도 대처가 없어도 되겠지요.
이번 시간엔 다른 주소에 있는 이미지를 서버에 저장시 필요한 코드 구성입니다.
$imgLink = "https://test.com/page/image.jpg";
// 파일명 가져오기
$linkArray = explode("/", $imgLink);
$filename = $linkArray[count($linkArray)-1];
// 확장자명 가져오기
//$ext = strtolower(pathinfo($imgLink, PATHINFO_EXTENSION)); // jpg
// 저장할 이미지 위치 및 파일명
$fp = fopen("./upload/".$filename,'w');
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $imgLink);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
// 가져올 외부이미지 주소
fwrite($fp,$contents);
fclose($fp);
echo '<img src="/upload/'.$filename.'">';
위 코드는 가져오는 이미지를 원래이름 그대로 저장할때 사용이 됩니다.
하지만 여기서 문제가 발생할 수 있는데요, 바로 이미지는 다른데 이름이 같은 경우가 있습니다.
이렇 경우를 대비해서 저장할때 랜덤함수를 이용하여 서버로 저장되는 이미지의 파일명 중복을 방지하는 것입니다.
자 다음 코드는 위 코드를 기반으로 이미지의 임시이름을 생성하여 적용, 저장합니다.
// 파일명 가져오기
$linkArray = explode("/", $imgLink);
$filename = $linkArray[count($linkArray)-1];
// 확장자명 가져오기
$ext = strtolower(pathinfo($imgLink, PATHINFO_EXTENSION)); // jpg
// 임시이름 (현재시간_랜덤수.확장자) - 파일명 중복을 대비 임시이름을 덧붙여 저장
$tmp_filename = time() . '_' . mt_rand(0,99999) . '.' . strtolower($ext);
// 저장할 이미지 위치 및 파일명
$fp = fopen("./upload/".$tmp_filename,'w');
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $imgLink);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);
curl_close($ch);
// 가져올 외부이미지 주소
fwrite($fp,$contents);
fclose($fp);
echo '<img src="/upload/'.$tmp_filename.'">';
'노코드 No Code' 카테고리의 다른 글
HTML, CSS 무한 롤링, 흐르는 텍스트 (0) | 2024.02.06 |
---|---|
테슬라 웹사이트와 동일한 화면 스크롤링 구현 (0) | 2022.10.07 |
[PHP] 헤더 meta 태그 가져오기 (0) | 2022.09.30 |
댓글