PHP를 사용하여 원격 서버에서 로컬 폴더로 이미지를 가져 오거나 복사하는 간단한 방법을 찾고 있습니다. 서버에 대한 FTP 액세스 권한이 없지만 모든 원격 이미지는 HTTP (예 : http://www.mydomain.com/myimage.jpg ) 를 통해 액세스 할 수 있습니다 .
사용 예 : 사용자가 자신의 프로필에 이미지를 추가하려고합니다. 이미지가 이미 웹에 있으며 사용자가 직접 URL을 제공합니다. 이미지를 핫 링크하지 않고 내 도메인에서 가져 와서 제공하고 싶습니다.
답변
서버에서 PHP5와 HTTP 스트림 래퍼를 활성화 한 경우 로컬 파일에 복사하는 것은 매우 간단합니다.
copy('http://somedomain.com/file.jpeg', '/tmp/file.jpeg');
이것은 필요한 모든 파이프 라이닝 등을 처리합니다. 일부 HTTP 매개 변수를 제공해야하는 경우 제공 할 수있는 세 번째 ‘스트림 컨텍스트’매개 변수가 있습니다.
답변
사용하다
$imageString = file_get_contents("http://example.com/image.jpg");
$save = file_put_contents('Image/saveto/image.jpg',$imageString);
답변
PHP에는 파일의 내용을 문자열로 읽는 내장 함수 file_get_contents ()가 있습니다.
<?php
//Get the file
$content = file_get_contents("http://example.com/image.jpg");
//Store in the filesystem.
$fp = fopen("/location/to/save/image.jpg", "w");
fwrite($fp, $content);
fclose($fp);
?>
파일을 데이터베이스에 저장하려면 $ content 변수를 사용하고 파일을 디스크에 저장하지 마십시오.
답변
답변
가장 기본적인 방법은 다음과 같습니다.
$url = "http://other-site/image.png";
$dir = "/my/local/dir/";
$rfile = fopen($url, "r");
$lfile = fopen($dir . basename($url), "w");
while(!feof($url)) fwrite($lfile, fread($rfile, 1), 1);
fclose($rfile);
fclose($lfile);
그러나이 작업을 많이 수행하거나 호스트가 원격 시스템에 대한 파일 액세스를 차단하는 경우 CURL을 사용하는 것이 좋습니다. CURL은 더 효율적이고 약간 더 빠르며 더 많은 공유 호스트에서 사용할 수 있습니다.
봇이 아닌 데스크톱처럼 보이도록 사용자 에이전트를 스푸핑 할 수도 있습니다!
$url = "http://other-site/image.png";
$dir = "/my/local/dir/";
$lfile = fopen($dir . basename($url), "w");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)');
curl_setopt($ch, CURLOPT_FILE, $lfile);
fclose($lfile);
curl_close($ch);
두 경우 모두 GD를 통해 전달하여 실제로 이미지인지 확인할 수 있습니다.
답변
file_get_contents를 사용하는 것은 매우 간단 합니다. 첫 번째 매개 변수로 URL을 제공하십시오.
답변
폴더를 만들고 적의 이름을 지정하십시오. 예제를 열고 메모장을 열고이 코드를 삽입하십시오.
http://www.google.com/aa.zip 을 파일로 변경 하고 예를 들어 m.php에 저장하십시오.
php 파일을 666으로 chamod하고 폴더를 777로 다운로드합니다.
<?php
define('BUFSIZ', 4095);
$url = 'http://www.google.com/aa.zip';
$rfile = fopen($url, 'r');
$lfile = fopen(basename($url), 'w');
while(!feof($rfile))
fwrite($lfile, fread($rfile, BUFSIZ), BUFSIZ);
fclose($rfile);
fclose($lfile);
?>
마지막으로 브라우저에서 다음 URL http://www.example.com/download/m.php를 입력
하십시오.
다른 서버에서 다운로드 한 파일이 다운로드 폴더에 표시됩니다.
감사