테스트 사이트 - 개발 중인 베타 버전입니다

카페24 웹호스팅 타서버 이미지 가져오기 채택완료

ideaman 9개월 전 조회 1,476

안녕하세요 고수님들! 궁금한게 있습니다

 

카페24 일반 웹호스팅 사용중인데요!

외부 링크의 이미지를 긁어오려는데 자꾸 실패를 합니다

sudo 권한은 없고 wget 설치 말고는 방법이 없나요?

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
glitter0gim
9개월 전

카페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)

</span></p>

<p><?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);</p>

<p>    if ($image_data) {

        file_put_contents($save_to, $image_data);

        return true;

    }

    return false;

}</p>

<p>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;</p>

<p>            // 이미지 다운로드 시도

            if (download_image($url, $save_path)) {

                echo "이미지 저장 성공: $save_path
";

            } else {

                echo "이미지 저장 실패: $url
";

            }</p>

<p>            // 후기 데이터 출력 (또는 DB 저장 처리)

            echo "후기 내용: " . $row['review_text'] . "
";

            echo "글쓴이: " . $row['author'] . "
";

            echo "이미지 경로: $save_path
<hr>";

        }

        fclose($handle);

    } else {

        echo "CSV 파일을 열 수 없습니다.";

    }

}</p>

<p>// 사용 예시

$csv_file = 'reviews.csv'; // CSV 파일 경로

$upload_dir = 'uploaded_images'; // 이미지 저장 경로</p>

<p>// 업로드 디렉토리가 없으면 생성

if (!is_dir($upload_dir)) {

    mkdir($upload_dir, 0755, true);

}</p>

<p>process_csv($csv_file, $upload_dir);

?></p>

<p>

*reviews.csv: CSV 파일 경로. CSV는

  image_url, review_text, author 등의 헤더와 데이터를 포함

*uploaded_images/는 다운로드된 이미지가 저장되는 디렉토리

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

i
ideaman
9개월 전
감사합니다 참고하여 해결하였습니다

댓글을 작성하려면 로그인이 필요합니다.

9개월 전

curl을 이용해서 긁어오시면 됩니다.

기왕이면 크롤링으로 굳이 엑셀파일에 저장해서 옮겨올 필요없이 가져오시는 게 어떨까 싶네요.

컨텐츠몰에 관련 프로그램도 있는것 같던데 그냥 이용하시는 게 맘 편하고 시간도 절약됩니다

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

i
ideaman
9개월 전
답변 감사합니다 해결하였습니다 네이버 스마트스토어 후기를 영카트에 올리는건 없더라구요 ㅠㅠ 네이버페이 후기만 된다고 하시어 이렇게 저렇게하면서 ㅎㅎ 완성했어요 근데 웹호스팅으로 바로 타솔루션의 글이나 사진을 바로 크롤링해서 업데이트 하는 방법이 있나요? ㅎㅎ

댓글을 작성하려면 로그인이 필요합니다.

9개월 전

네이버 이미지면 네이버측에서 외부에서 저장 못하게 막고 있는게 아닐까 싶은데 해당은 확인을 해보셨나요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

i
ideaman
9개월 전
curl 로 해결을 했어요 진작 curl 로 테스트를 했는데 후기에 이미지가 자꾸 안떠서 오늘 보니까 제 호스팅으로 이미지가 잘 들어왔는데 출력을 안하고 있더라구요 ㅜㅜ 그래서 이미지 출력 코드를 넣어주니 작동되네요

댓글을 작성하려면 로그인이 필요합니다.

9개월 전

크롤링 쓴다는건가요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

i
ideaman
9개월 전
맞습니다 제가 운영하는 네이버스마트스토어의 후기가 엑셀로 저장이 되고있고 이미지는 url 로 들어오는데 그걸 제 웹호스팅에 들어오게 php 는 다 만들어놨는데 이미지만 자꾸 실패합니다
리오닥터
9개월 전
그럼 크롤링은 무엇으로 쓰나요? 파이썬? 구체적으로 알려주세요
i
ideaman
9개월 전
제가 클로드를 이용해서 PHP 작업을 했는데요 후기내용이나 글쓴이 등 필요한 데이터는 CSV 로 업로드해서 후기를 옮기려하는데 CSV 에 이미지쪽은 URL 로 네이버로 부터 제공이 됩니다. 그래서 그 이미지의 URL 을 제 웹호스팅에 저장시켜 후기에 같이 올리고싶어서요
리오닥터
9개월 전
카페24면 allow_url_fopen 이거 오픈 해보세요

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인