[英]PHP - Download cURL result
我在下面写了函数:
function download_xfs($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIE, 'login=michael; xfss=08ruiweu4tuhb5xqs8');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$string = curl_exec ($ch);
curl_close ($ch);
// Set headers
}
当我使用download_xfs("http://address.com/file.html");
它返回文件的二进制文件而不是实际文件。 任何人都可以重写此代码来处理要下载的文件吗?
您的错误不在于下载文件,PNG可以下载确定,但是您可能只是将其回显到屏幕上。 您必须为此文件mime类型设置适当的HTTP标头:
header('Content-type:image / png');
但是请记住,不要在图像内容之前和之后回显任何其他字符串/字符(绝对不要,甚至包括关于Windows记事本在php文件开头创建的UTF的不可见BOM信息)。 如果要在HTML页面中包含服务器可下载的图像,则必须使用此标头和图像内容创建另一个.php,并通过以下方式包括它:
<img src="image_from_download.php">
如果要接收纯文本,但有意外的二进制文件
远程服务器上可能存在一些未知的解决方案,该解决方案会发送不同的内容或依赖于用户代理将您重定向到映像。
尝试将cUrl中的用户代理设置为与原始浏览器相同。
另外,通过在HTTP请求中发送适当的Accept
标头,确保未压缩或分块远程服务器提供的内容(我不知道,curl是否自动将其解压缩?)。
此问题也可能取决于状态,可能您需要设置一些cookie或从中检索.html的位置将其记录在远程Web应用程序中。
尝试关闭您的FOLLOWLOCATION
,也许您收到30 FOLLOWLOCATION
重定向到图像。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.