我试图点击返回二进制数据并用于保存文件的url。当我尝试使用file_put_contents文件得到生成,但内容是空的或文件说它已损坏。php下载一个curl文件,返回二进制数据
$url_call = 'http://someurl.com/file/15646';
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url_call);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER,0);
$response = curl_exec($ch);
curl_close($ch);
file_put_contents('/data/testingdirect.pdf', $response);
我知道那里有很多问题在那里相似,IV通过所有的人都看着,想他们,但他们都返回相同的结果的损坏或空文件。
我知道该文件是好的,因为我可以直接在服务器上直接访问该文件,并发现它很好。
也有一种方法可以让我确定文件类型或内容类型,以了解如何保存fil或pdf或jpeg或其他任何文件。
改写卷曲是这样的:
$fp = fopen ('/data/testingdirect.jpg', 'w+');
$ch=curl_init();
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_URL, $url_call);
curl_setopt($ch, CURLOPT_HEADER,0);
$response = curl_exec($ch);
curl_close($ch);
fclose($fp);
和同样的事情仍在发生。
当您尝试将'testingdirect.pdf'作为纯文本查看时会发生什么? (下载的文件 - >用记事本编辑)还有'BINARYTRANSFER'尝试'false'? –
我看到的二进制数据 HTTP/1.1 200 OK 的Last-Modified:星期三,2013年7月17日20时36分05秒GMT 的Etag:af362918b9ee35b969cdsfdfe4db2b0e7 接受-范围:字节 的Content-Length:3906609 内容类型: image/jpeg 日期:2013年7月18日星期四22:55:17 GMT – Yeak