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

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

QA

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

답변 2

본문

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

 

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

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,111
© SIRSOFT
현재 페이지 제일 처음으로