蛋糕如何从其他服务器 php 下载服务器上的 pdf 文件


cakeHow to download a pdf file on server from other server php

>我陷入了必须从绝对路径下载pdf文件到我们的服务器的情况,但我无法这样做。所有进程都在后台工作,我不希望前台用户可以看到后台会发生什么。

任何人都可以提供任何解决方案吗?也许它是如此简单,但我被困住了。

您可以使用 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 
}

使用一些 HTTP 客户端库,如 PHP CURL

是的,您可以使用PHP CURL但它会阻止,直到您从外部资源收到文件。如果文件有点重,这不是一个好的选择。在这种情况下,您可能希望将脚本作为cronjob运行,或者使用一些多线程库,如多请求

这是发出 http 请求的基本代码片段。我还没有测试过它,但您可以获得一些见解并自己调整/调试它。

    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();
相关文章: