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

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

QA

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

본문

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

 

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

 

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

 

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

 

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

 

좋은 방법이 없을까요?

 

이 질문에 댓글 쓰기 :

답변 2

둘다 적용해 보았는데 가져 오지는 못하네요. 특히 두번째꺼를 해보니까 게시물이 한개 있는 게시판의 경우 ! 라고 결과값이 나왔는데 여전히 이미지는 다른 서버에 있다고 나오네요..ㅠㅠ

안녕하세요.

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

 

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");
}
?>
 

답변을 작성하시기 전에 로그인 해주세요.
전체 15,334
QA 내용 검색
filter #php ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT