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

외부 이미지를 서버에 저장 하는 방법에 대한 질문입니다. 채택완료

그누오키도키 1년 전 조회 2,017

외부 이미지를 가져와서 쓰는 게시물이 조금 많은데요

 

img 태그로 그냥 이미지를 스마트 웹 에디터를 이용해서 올려 놓은 이미지 인데

 

이걸 새로 글을 작성 할때나 혹은 이미 태그가 걸려 있는 게시물들을 기준으로 해서

 

서버에 저장 할 수 있는 방법은 없을까요?

 

상대 서버에서는 외부 이미지 저장 을 막아 놓은거 같기는 합니다..

 

좋은 방법이 없을까요?

 

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

답변 2개

채택된 답변
+20 포인트

답변에 대한 댓글 4개

그누오키도키
1년 전
둘다 적용해 보았는데 가져 오지는 못하네요. 특히 두번째꺼를 해보니까 게시물이 한개 있는 게시판의 경우 ! 라고 결과값이 나왔는데 여전히 이미지는 다른 서버에 있다고 나오네요..ㅠㅠ
그누오키도키
1년 전
게시물 본문에 이미지 태그와 https:// 로 시작하는 이미지의 풀 주소가 있는데도 못 가져 오니까 답답하네요..ㅠㅠ;; 수동으로 하자니 양이 너무 많아요..ㅜㅜ
그누오키도키
1년 전
이미지 외부 불펌 차단이 설정되어 있는 서버 라면 포기 해야 될까요?
마르스컴퍼니
1년 전
포기해야 될 지도..
다른 방법은 잘 모르겠습니다.

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

1년 전

안녕하세요.

아래의 방법을 참고해 보시겠어요..

 

1. 외부 이미지 다운로드하여 서버에 저장 샘플

 

<?php
function save_external_image($image_url, $save_path) {
    // 이미지 파일을 다운로드
    $ch = curl_init($image_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    $image_data = curl_exec($ch);
    curl_close($ch);

    // 이미지 데이터를 서버에 저장
    file_put_contents($save_path, $image_data);
}

// 사용 예시
$image_url = 'http://example.com/image.jpg';
$save_path = 'path/to/save/image.jpg';
save_external_image($image_url, $save_path);
?>
 

 

2. 게시물 내용에서 외부 이미지 URL을 찾아 서버에 저장 후 경로 수정 샘플

 

<?php
function save_images_and_replace_content($content) {
    // 이미지 URL을 추출하기 위한 정규식
    $pattern = '/<img[^>]+src=["\'](http[^"\']+)["\'][^>]*>/i';
    preg_match_all($pattern, $content, $matches);

    foreach ($matches[1] as $image_url) {
        // 이미지 파일명을 추출
        $image_name = basename($image_url);
        $save_path = 'path/to/save/' . $image_name;

        // 이미지를 서버에 저장
        save_external_image($image_url, $save_path);

        // 기존 이미지 URL을 서버 경로로 변경
        $server_image_url = '/path/to/save/' . $image_name;
        $content = str_replace($image_url, $server_image_url, $content);
    }

    return $content;
}

// 게시물 저장 시 사용 예시
$content = '<p><img src="http://example.com/image.jpg" alt="Example Image"></p>';
$new_content = save_images_and_replace_content($content);
echo $new_content;
?>
 

3. 기존 게시물 일괄처리 샘플

 

<?php
include_once('common.php');

// 모든 게시물을 처리
$result = sql_query("SELECT wr_id, wr_content FROM g5_write_board");
while ($row = sql_fetch_array($result)) {
    $wr_id = $row['wr_id'];
    $wr_content = $row['wr_content'];

    // 외부 이미지를 서버에 저장하고 경로를 수정
    $new_content = save_images_and_replace_content($wr_content);

    // 수정된 내용을 데이터베이스에 업데이트
    sql_query("UPDATE g5_write_board SET wr_content = '".addslashes($new_content)."' WHERE wr_id = $wr_id");
}
?>
 

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

답변에 대한 댓글 1개

그누오키도키
1년 전
어디에 어떻게 적용하는지는 모르겠습니다..ㅠㅠ 천천히 보면서 이해 해보겠습니다..ㅠㅠ

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

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

로그인