-1

cURL から取得して画像を表示しようとしていますが、何も表示されません。ヘッダーは正しく送信されているので、次にどこを見ればよいでしょうか?

 <?php
    error_reporting(E_ALL);
    ini_set('display_errors', '1');

    //$imgurl = $_GET['img'];

    $query = curl_init();
    $headers[] = 'Cache-Control: maxage=. $cache_expire';
    $headers[] = 'Pragma: public';
    $headers[] = 'Accept-Encoding: None';
    //curl_setopt($query, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($query, CURLOPT_URL, "http://static4.fjcdn.com/comments/3885449+_bf7680ea243464ace7ddb3d912c7c7d6.jpg");
    curl_setopt($query, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
    curl_setopt($query, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($query, CURLOPT_HEADER, 1);
    $ret = curl_exec($query);
    if(!preg_match("/Content-Type\: image(.*)\r\n/i", $ret, $mime))
    die("die potato!");
    header($mime[0]);
    echo substr(strstr($ret, "\r\n\r\n"), 4);
?>
4

2 に答える 2

1

なぜ物事を複雑にするのですか?この方法はどうですか:

$img_url = 'http://static4.fjcdn.com/comments/3885449+_bf7680ea243464ace7ddb3d912c7c7d6.jpg';
$content = file_get_contents( $img_url );
header('Content-Type: image/png');
echo $content;
于 2013-01-17T14:41:47.880 に答える
0

コードから削除curl_setopt($query, CURLOPT_HEADER, 1);します。CURLOPT_HEADER応答に応答ヘッダーを含めます。これにより、イメージが不正になります。

次のコードは問題なく動作します。

function curlHeaderCallback($query, $header){
    if(stripos($header, "content-type")!==false){
        header(trim($header));
    }
    return strlen($header); 
}

$query = curl_init("http://bd1.php.net/images/php.gif");
curl_setopt($query, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt($query, CURLOPT_HEADERFUNCTION, 'curlHeaderCallback'); 
curl_setopt($query, CURLOPT_RETURNTRANSFER, 1);
$ret = curl_exec($query);
echo $ret;
于 2013-01-17T14:42:11.700 に答える