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

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

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

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

 

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

 

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

 

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

 

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

 

좋은 방법이 없을까요?

 

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

답변 2개

채택된 답변
+20 포인트

답변에 대한 댓글 4개

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

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

1년 전

안녕하세요.

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

 

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

 

    // 이미지 데이터를 서버에 저장     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을 찾아 서버에 저장 후 경로 수정 샘플

 

]+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 = '

http://example.com/image.jpg" alt="Example Image">

'; $new_content = save_images_and_replace_content($content); echo $new_content; ?>  

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

 

// 모든 게시물을 처리 $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년 전
어디에 어떻게 적용하는지는 모르겠습니다..ㅠㅠ 천천히 보면서 이해 해보겠습니다..ㅠㅠ

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

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

로그인