0

Facebook APIを使用してアプリユーザーのプロフィール写真を取得し、サーバーに保存しようとしています。画像は問題なく取得できていますが、新しい画像ファイルを作成して正しいフォルダーに保存するのに問題があるようです。fopen 関数と file_put_contents 関数を使用してみましたが、ファイルを事前に作成する必要があるようです。fb ユーザーの画像をサーバーに保存するにはどうすればよいですか? 私のコードは次のとおりです。

$facebook = new Facebook(array(
'appId' => '12345',
'secret' => '12345',
'cookie' => true
));

$access_token = $facebook->getAccessToken();

if($access_token != "") 
{
$user = $facebook->getUser();
if($user != 0)
{
            $user_profile = $facebook->api('/me');   

        $fb_id = $user_profile['id'];
        $fb_first_name = $user_profile['first_name'];
        $fb_last_name = $user_profile['last_name'];
        $fb_email = $user_profile['email'];

            $img = file_get_contents('https://graph.facebook.com/'.$fb_id.'/picture?type=large');
    $file = '/img/profile_pics/large/';
    rename($img, "".$file."".$img."");
    }

助言がありますか?

ありがとう、

ランス

4

2 に答える 2

1

img を使用$img = file_get_contents(...)すると、画像のソースが含まれ、それをファイルに保存するだけで機能しませんrename()

ただ行う:

error_reporting(E_ALL);//For debugging, in case something else

$img_data = file_get_contents('https://graph.facebook.com/'.$fb_id.'/picture?type=large');

$save_path = '/img/profile_pics/large/';
if(!file_exists($save_path)){
    die('Folder path does not exist');
}else{
    file_put_contents($save_path.$fb_id.'.jpg',$img_data);
}
于 2012-08-18T03:56:06.367 に答える
0

まず、イメージを作成しようとしているディレクトリが書き込み可能であることを確認してください。そうでない場合は、適切な chmod を指定してください。

ローレンスが言ったように、コード内の $img 変数には実際にはファイル名が含まれていませんが、画像自体が含まれています。ファイルに保存するには、2 番目の引数として file_put_contents に渡し、最初の引数としてファイル名を渡す必要があります。

file_put_contents('image.ext', $img);

またはこの場合:

file_put_contents($file.'/image.ext', $img);

PHP スクリプトと同じディレクトリに保存するには、__DIR__定数を使用して絶対パスを取得します。

file_put_contents(__DIR__.'/image.ext', $img);
于 2012-08-18T04:00:21.933 に答える