繁体   English   中英

PHP-下载cURL结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM