GD라이브러리 또는 CURL 로 원격서버에 있는 이미지 저장이 안됩니다.
본문
구글링해보니 GD라이브러리를 이용하여 원격지 파일을 저장할수 있다고 하는데요
<?php
$my_server_img = 'http://내도메인/test.png';
$img = imagecreatefromjpeg($my_server_img);
$path = 'test/';
imagejpeg($img, $path);
?>
이런 소스인데 실행해도 작동이 안하네요.
test 폴더는 777 권한 주었습니다.
또 검색해보니 비슷한 소스가 있는데요
<?php
function save_remote_image($url, $dir)
{
$filename = '';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec ($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($http_code == 200) {
$filename = basename($url);
if(preg_match("/\.(gif|jpg|jpeg|png)$/i", $filename)) {
$tmpname = date('YmdHis').(microtime(true) * 10000);
$filepath = $dir;
@mkdir($filepath, '0755');
@chmod($filepath, '0755');
// 파일 다운로드
$path = $filepath.'/'.$tmpname;
$fp = fopen ($path, 'w+');
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, false );
curl_setopt( $ch, CURLOPT_BINARYTRANSFER, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 10 );
curl_setopt( $ch, CURLOPT_FILE, $fp );
curl_exec( $ch );
curl_close( $ch );
fclose( $fp );
// 다운로드 파일이 이미지인지 체크
if(is_file($path)) {
$size = @getimagesize($path);
if($size[2] < 1 || $size[2] > 3) {
@unlink($path);
$filename = '';
} else {
$ext = array(1=>'gif', 2=>'jpg', 3=>'png');
$filename = $tmpname.'.'.$ext[$size[2]];
rename($path, $filepath.'/'.$filename);
chmod($filepath.'/'.$filename, '0644');
}
}
}
}
return $filename;
}
?>
이건 어떻게 사용하는걸까요?
궁극적인 목적은
외부 도메인1.com 에 있는 test.zip 파일을
내 서버 /test 폴더에 올리는것입니다.
답변 2
gd 는 이미지 파일을 읽어서 저장하는 모듈입니다.
원하시는 zip은 저장이 이미 압축된 파일이라
이미지로 인식이 안됩니다.
wget 으로 zip 을 다운로드 하는방법을 찾아보세요
서버에서 wget 등으로 해당 파일이 불러와 지는지 한번 확인해 보세요.
답변을 작성하시기 전에 로그인 해주세요.