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 등으로 해당 파일이 불러와 지는지 한번 확인해 보세요.
답변을 작성하시기 전에 로그인 해주세요.