2013-01-25 204 views
0

我陷入了一種情況,我必須從文件絕對路徑下載pdf文件到我們的服務器,但我無法這樣做。所有進程在後臺工作,我不希望前端用戶可以看到後臺會發生什麼情況。如何在服務器上從其他服務器下載PDF文件php

任何人都可以提供任何解決方案嗎?可能是這麼簡單,但我卡住了。

回答

1

您可以使用Copy

$pdf = "http://wwww.somesite.com/something.pdf"; 
$pdf = str_replace(" ", "%20", $pdf); 
$savedpdf = "/rootsomething/savedpdf/saved.pdf"; 
if(copy($pdf, $savedpdf)){ 
//The file was copied correctly 
} 
+0

無法打開流:HTTP請求失敗!錯誤來了 –

+0

如果你不介意,你可以發佈你試圖保存PDF的網址嗎? –

+0

http://www.mppolice.gov.in/ArrestedPerson/Arrested Person.pdf –

0

使用的HTTP客戶端庫像PHP CURL

+0

捲曲可能嗎?如果是,你能否提供一個解決方案的例子 –

+0

花一些時間閱讀CURL文檔和示例。 –

+0

謝謝:)問題已解決 –

0

是的,你可以使用PHP CURL但它會阻止,直到你從外部resource.Not一個很好的選擇,如果文件接收文件有點重。 您可能要運行腳本的cronjob在那種情況下,或者使用一些多線程庫一樣multirequest

這裏是裸骨的代碼片段,使一個http request.I沒有測試它,但你可以得到一些洞察和調整/調試它自己。

function saveCompleteRequestToFile(MultiRequest_Request $request, MultiRequest_Handler $handler) { 
    $filename = preg_replace('/[^\w\.]/', '', $request->getUrl()); 
    file_put_contents('directory_path_here' . $filename, $request->getContent()); 
} 

$mrHandler = new MultiRequest_Handler(); 
$mrHandler->onRequestComplete('saveCompleteRequestToFile'); 

$headers = array(); 
$headers[] = 'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'; 
$headers[] = 'Cache-Control: no-cache'; 
$headers[] = 'Connection: Keep-Alive'; 
$headers[] = 'Keep-Alive: 300'; 
$headers[] = 'Accept-Charset: UTF-8,Windows-1251,ISO-8859-1;q=0.7,*;q=0.7'; 
$headers[] = 'Accept-Language: ru,en-us,en;q=0.5'; 
$headers[] = 'Pragma:'; 
$mrHandler->requestsDefaults()->addHeaders($headers); 

$options = array(); 
$options[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12'; 
$mrHandler->requestsDefaults()->addCurlOptions($options); 

$request = new MultiRequest_Request('http://somedomain/path/file.pdf'); 
$mrHandler->pushRequestToQueue($request); 
$mrHandler->start(); 
+0

用curl我怎麼能實現它請解釋一下? –