PHP에서 웹상의 이미지를 저장하려면 > AI

본문 바로가기

사이트 내 전체검색

뒤로가기 AI

chatgpt PHP에서 웹상의 이미지를 저장하려면

페이지 정보

작성자 관리자 작성일 25-04-24 13:33 조회 2 댓글 0

본문

file_get_contents() 함수와 file_put_contents() 함수를 함께 사용할 수 있습니다. 아래는 그 예시 코드입니다:


<?php

// 저장할 이미지 URL

$imageUrl = 'https://example.com/image.jpg';


// 저장할 파일 이름 (현재 폴더에 저장)

$savePath = 'image.jpg';


// 웹에서 이미지 내용 가져오기

$imageData = file_get_contents($imageUrl);


// 이미지 저장

if ($imageData !== false) {

    file_put_contents($savePath, $imageData);

    echo "이미지가 저장되었습니다: $savePath";

} else {

    echo "이미지를 다운로드할 수 없습니다.";

}

?>



보안이나 성능상의 이유로 cURL을 사용하는 방식이 권장되기도 합니다. 


<?php

$imageUrl = 'https://example.com/image.jpg';

$savePath = 'image.jpg';


$ch = curl_init($imageUrl);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$imageData = curl_exec($ch);

curl_close($ch);


if ($imageData !== false) {

    file_put_contents($savePath, $imageData);

    echo "이미지가 저장되었습니다: $savePath";

} else {

    echo "이미지를 다운로드할 수 없습니다.";

}

?>



PHP에서 웹 이미지를 저장할 때 파일 이름이나 경로에 공백(띄어쓰기)이 있으면 문제가 생길 수 있습니다. 이런 경우는 아래와 같은 방식으로 안전하게 처리할 수 있어요:


<?php

$url = 'https://example.com/images/sample image.jpg'; // 공백 포함된 URL

$savePath = 'images/my folder/sample image.jpg';      // 공백 포함된 경로


// URL의 공백을 인코딩 (공백은 %20으로)

$encodedUrl = str_replace(' ', '%20', $url);


// 저장 경로의 폴더가 없으면 생성

$dir = dirname($savePath);

if (!is_dir($dir)) {

    mkdir($dir, 0777, true);

}


// 이미지 저장

$imageData = file_get_contents($encodedUrl);

if ($imageData === false) {

    echo "이미지를 가져올 수 없습니다.";

} else {

    file_put_contents($savePath, $imageData);

    echo "이미지 저장 완료: $savePath";

}

?>



💡 참고사항

  • file_get_contents()는 URL을 가져올 때 공백이 있으면 실패할 수 있으므로 str_replace(' ', '%20', $url)로 인코딩해야 합니다.

  • 저장할 로컬 경로에는 공백이 있어도 괜찮지만, 디렉토리가 존재하는지 확인 후 mkdir()로 만들어야 합니다.

  • 파일 이름이나 경로에 특수 문자(&, ?, #, 등등)가 포함되어 있을 경우도 rawurlencode()`로 처리해주는 게 좋을 수 있습니다.



추천0 비추천 0

댓글목록 0

등록된 댓글이 없습니다.

Copyright © NEION All rights reserved.
PC 버전으로 보기