chatgpt PHP에서 웹상의 이미지를 저장하려면
페이지 정보
작성자 관리자 작성일 25-04-24 13:33 조회 3 댓글 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
등록된 댓글이 없습니다.