카페24 웹호스팅 타서버 이미지 가져오기
본문
안녕하세요 고수님들! 궁금한게 있습니다
카페24 일반 웹호스팅 사용중인데요!
외부 링크의 이미지를 긁어오려는데 자꾸 실패를 합니다
sudo 권한은 없고 wget 설치 말고는 방법이 없나요?
답변 3
크롤링 쓴다는건가요?
네이버 이미지면 네이버측에서 외부에서 저장 못하게 막고 있는게 아닐까 싶은데 해당은 확인을 해보셨나요?
카페24 일반 웹호스팅에서는 allow_url_fopen 설정이 기본적으로 비활성화되어 있습니다.
PHP의 cURL 라이브러리를 활용하여 외부 이미지를 가져오는 방법이 효과적입니다.
cURL은 대부분의 웹호스팅 환경에서 기본적으로 활성화되어 있으며,
이를 통해 외부 리소스에 안전하게 접근할 수 있습니다.
cURL을 사용한 이미지 다운로드 방식이 최적이며,
아래의 코드를 기반으로 필요한 데이터를 CSV에서 읽고
이미지와 함께 후기 데이터를 처리하면 문제없이 목표를 달성할 수 있을 것입니다
1. CSV 파일에서 image_url, review_text, author 등의 필드를 읽어옴.
CSV의 첫 줄은 헤더로 처리하여 데이터와 매칭.
2. 이미지 URL에서 파일 이름을 추출하여 uploaded_images 디렉토리에 저장.
cURL을 사용하여 이미지를 다운로드하며, 성공 여부를 출력.
3. 후기 내용을 화면에 출력하거나, 데이터베이스로 저장.
4. uploaded_images 디렉토리가 없다면, mkdir로 생성하고 쓰기 권한을 설정.
*예시 (호스팅ID/www/download_image.php)
<?php
function download_image($url, $save_to) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // SSL 인증 무시
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 요청 제한 시간 설정
$image_data = curl_exec($ch);
curl_close($ch);
if ($image_data) {
file_put_contents($save_to, $image_data);
return true;
}
return false;
}
function process_csv($csv_file, $upload_dir) {
if (($handle = fopen($csv_file, "r")) !== false) {
// 헤더를 읽어옵니다.
$headers = fgetcsv($handle, 1000, ",");
while (($data = fgetcsv($handle, 1000, ",")) !== false) {
$row = array_combine($headers, $data);
$url = $row['image_url']; // CSV의 이미지 URL 필드
$image_name = basename(parse_url($url, PHP_URL_PATH)); // 파일 이름 추출
$save_path = $upload_dir . '/' . $image_name;
// 이미지 다운로드 시도
if (download_image($url, $save_path)) {
echo "이미지 저장 성공: $save_path<br>";
} else {
echo "이미지 저장 실패: $url<br>";
}
// 후기 데이터 출력 (또는 DB 저장 처리)
echo "후기 내용: " . $row['review_text'] . "<br>";
echo "글쓴이: " . $row['author'] . "<br>";
echo "이미지 경로: $save_path<br><hr>";
}
fclose($handle);
} else {
echo "CSV 파일을 열 수 없습니다.";
}
}
// 사용 예시
$csv_file = 'reviews.csv'; // CSV 파일 경로
$upload_dir = 'uploaded_images'; // 이미지 저장 경로
// 업로드 디렉토리가 없으면 생성
if (!is_dir($upload_dir)) {
mkdir($upload_dir, 0755, true);
}
process_csv($csv_file, $upload_dir);
?>
*reviews.csv: CSV 파일 경로. CSV는
image_url, review_text, author 등의 헤더와 데이터를 포함
*uploaded_images/는 다운로드된 이미지가 저장되는 디렉토리
!-->