반응형
외부 서버의 파일을 가져오려면 우선 php.ini에서 "allow_url_fopen"이 "on" 되어 있어야 한다.
아니면 힘든 과정을 거쳐야 한다.
1. copy 함수 이용
$url = "http://t1.daumcdn.net/daumtop_chanel/op/20200723055344399.png";
$file_name = basename($url);
copy($url, "./upload/".$file_name);
2. file_get_contents, file_put_contents 함수 이용
$url = "http://t1.daumcdn.net/daumtop_chanel/op/20200723055344399.png";
$file_name = basename($url);
$file = file_get_contents($url);
file_put_contents("./upload/".$file_name,$file);
3. file_get_contents, fwrite 함수 사용
$url = "http://t1.daumcdn.net/daumtop_chanel/op/20200723055344399.png";
$file_name = basename($url);
$fp = fopen("./upload/".$file_name, "w");
fwrite($fp, $file);
fclose($fp);
4. fopen, fwrite 함수 사용
$url = "http://t1.daumcdn.net/daumtop_chanel/op/20200723055344399.png";
$file_name = basename($url);
$rf = fopen($url, "r");
$fp = fopen("./upload/".$file_name, "w");
while(!feof($rf)) {
fwrite($fp, fread($rf, 1), 1);
}
fclose($rf);
fclose($fp);
만약에 Message: Maximum execution time of 30 seconds exceeded 이런 에러가 나면
php.ini 에서 max_excution_time = 30 을 늘려주시거나
소스상에서
ini_set('max_execution_time', 300);
set_time_limit(0);
둘중 하나를 넣어주면 됩니다.
5. curl을 이용한 방법
$url = "http://t1.daumcdn.net/daumtop_chanel/op/20200723055344399.png";
$file_name = basename($url);
$fp = fopen("./upload/".$file_name, "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, $fp);
curl_exec($ch);
fclose($fp);
curl_close($ch);
Call to undefined function curl_init()
이런 에러가 날 경우에는 curl 을 설치하면 됩니다.
반응형
'PHP' 카테고리의 다른 글
Call to undefined function mb_strtolower() 해결방법 (0) | 2023.08.24 |
---|---|
[PHP] 파일 확장자, 파일명, 폴더 파일리스트 구하기 (0) | 2023.08.17 |
php 슬랙 slack 메세지 연동 (0) | 2020.04.08 |
PHP 휴대폰번호 체크 함수 (0) | 2020.03.23 |
euc-kr 페이지에서 AJAX 연동시 한글 깨짐 현상(php) (0) | 2020.03.20 |