1

Facebookから画像のURLを取得しました:

https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-prn1/s720x720/156510_443901075651849_1975839315_n.jpg

これをローカルに保存する必要があります。使用file_get_contentsするとエラーが発生しましfailed to open streamた。ブラウザで画像を開くと、正常に表示されます。私はそれを行う方法を理解しています。

実際、次の方法でcurlを使用しましたが、まったく応答がありませんでした

$url = https://fbcdn-sphotos-ea.akamaihd.net/hphotos-ak-prn1/s720x720/156510_443901085651849_1975839315_n.jpg ;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$response = curl_exec($ch);
curl_close($ch);
$filename = 'ex'.$src['photo_id'].'.jpg';
$imgRes = imagecreatefromstring($response);
imagejpeg($imgRes, $filename, 70);

header("Content-Type: image/jpg");
imagejpeg($imgRes, NULL, 70);
4

3 に答える 3

3

これは、安全な URL を要求しており、サーバーが構成なしではおそらくサポートしていないためです。CURL を使用して、有効な証明書を含む URL を要求するか、SSL なしで要求してみることができます。

<?php

$file = 'http://url/to_image.jpg';
$data = file_get_contents($file);

header('Content-type: image/jpg');
echo $data;
于 2012-10-16T14:02:35.100 に答える
1

SSL接続を確認したくないことをcURLに伝える必要があります。

以下はテストされ、動作します。

$url = "https://******";


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // ignore SSL verifying
curl_setopt($ch, CURLOPT_HEADER, 0);
$response = curl_exec($ch);
curl_close($ch);

header("Content-Type: image/jpg");
echo $response;
于 2012-10-16T14:06:08.407 に答える
0

file_get_contentsFacebook が有効な User-Agent 文字列を要求し、リモート ファイルにアクセスするときに送信しないため、要求を拒否している可能性が最も高いです。

これを使用できます:

if( $f = fsockopen($host="fbcdn-sphotos-e-a-.akamaihd.net",80)) {
    fputs($f,"GET /hphotos-ak-prn1/........ HTTP/1.0\r\n"
            ."Host: ".$host."\r\n"
            ."User-Agent: My Image Downloader\r\n\r\n");
    $ret = "";
    $headers = true;
    while(!feof($f)) {
        $line = fgets($f);
        if( $headers) {
            if( trim($line) == "") $headers = false;
        }
        else $ret .= $line;
    }
    fclose($f);
    file_put_contents("mylocalfile.png",$ret);
}
于 2012-10-16T13:39:40.750 に答える