홈>
컬을 사용하여 원격 파일을 다운로드해야합니다.
내가 가지고있는 샘플 코드는 다음과 같습니다.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$st = curl_exec($ch);
$fd = fopen($tmp_name, 'w');
fwrite($fd, $st);
fclose($fd);
curl_close($ch);
하지만 메모리를 먼저 읽기 때문에 큰 파일을 처리 할 수 없습니다.
파일을 디스크로 직접 스트리밍 할 수 있습니까?
-
답변 # 1
-
답변 # 2
이 편리한 기능을 사용합니다 :
4094 바이트 단위로 다운로드하면 메모리가 가득 차지 않습니다
function download($file_source, $file_target) { $rh = fopen($file_source, 'rb'); $wh = fopen($file_target, 'w+b'); if (!$rh || !$wh) { return false; } while (!feof($rh)) { if (fwrite($wh, fread($rh, 4096)) === FALSE) { return false; } echo ' '; flush(); } fclose($rh); fclose($wh); return true; }
사용법 :
$result = download('http://url','path/local/file');
그런 다음 모든 것이 정상인지 확인할 수 있습니다 :
if (!$result) throw new Exception('Download error...');
-
답변 # 3
지정된 URL의 내용을 다운로드하려는 경우 아래 코드를 찾아 파일로 저장하십시오.
<?php $ch = curl_init(); /** * Set the URL of the page or file to download. */ curl_setopt($ch, CURLOPT_URL,'http://news.google.com/news?hl=en&topic=t&output=rss'); $fp = fopen('rss.xml', 'w+'); /** * Ask cURL to write the contents to a file */ curl_setopt($ch, CURLOPT_FILE, $fp); curl_exec ($ch); curl_close ($ch); fclose($fp); ?>
FTP 서버에서 파일을 다운로드하려면 php FTP 확장을 사용할 수 있습니다. 아래 코드를 찾으십시오 :
<?php $SERVER_ADDRESS=""; $SERVER_USERNAME=""; $SERVER_PASSWORD=""; $conn_id = ftp_connect($SERVER_ADDRESS); // login with username and password $login_result = ftp_login($conn_id, $SERVER_USERNAME, $SERVER_PASSWORD); $server_file="test.pdf" //FTP server file path $local_file = "new.pdf"; //Local server file path ##----- DOWNLOAD $SERVER_FILE AND SAVE TO $LOCAL_FILE--------## if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) { echo "Successfully written to $local_file\n"; } else { echo "There was a problem\n"; } ftp_close($conn_id); ?>
-
답변 # 4
와 이츠 비츠 다음 큰 파일을 다운로드하는 데 사용됩니다
curl
설정해야하는 기본 옵션입니다.CURLOPT_TIMEOUT
pdf/csv/image 등의 파일을 얻는 경우에 대비해야합니다.여기에서 더 자세한 내용을 볼 수 있습니다 (올바른 URL) Curl Doc
해당 페이지에서 :
CURLOPT_RETURNTRANSFER
사전> -
답변 # 5
를 당신은 파일 시스템에 반환 다운로드 한 파일의 경로 모든 것이 잘 작동하는 경우에 임시 파일을 생성이 기능을 사용할 수 있습니다
curl_setopt($request, CURLOPT_TIMEOUT, 300); //set timeout to 5 mins curl_setopt($request, CURLOPT_RETURNTRANSFER, true); // true to get the output as string otherwise false
function getFileContents($url) { // Workaround: Save temp file $img = tempnam(sys_get_temp_dir(), 'pdf-'); $img .= '.' . pathinfo($url, PATHINFO_EXTENSION); $fp = fopen($img, 'w+'); $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $result = curl_exec($ch); curl_close($ch); fclose($fp); return $result ? $img : false; }
관련 질문
- PHP에서 올바르게 컬 실행
- JavaScript Get 요청을 PHP Curl로 변환
- cURL 및 PHP를 통해 POST 데이터를 올바르게 검색하는 방법은 무엇입니까?
- php - 가져 오기 응용 프로그램/옥텟 스트림 유형 파일은 이미지/jpg 또는 비디오/mp4입니다
- PHP를 통해 작동하도록 API Curl 인증을 제대로 가져올 수 없습니다
- php curl은 프록시로 인해 브라우저 및 CLI에서 다르게 작동합니다
- php - 이미지 유형 투사 이미지를 컬링하는 방법은 무엇입니까?
- PHP를 사용하여 Facebook 페이지에 비디오를 업로드 할 수 없지만 curl을 사용할 수 있음
- PHP를 사용하여 다차원 json 응답에서 키와 값을 어떻게 얻을 수 있습니까?
- php - 1st Curl의 응답 헤더에서 2nd Curl에서 $url을 사용하는 동안 오류가 발생했지만 URL 작성은 수동으로 작동합니다