0

file_put_contents を使用して画像をアップロードすると、0 バイトのファイルが作成されます。

これが私が使用するコードです。Facebook の画像の URL を抽出し、Web サーバーに配置します。

$fb_image_url = 'https://example.com/229282.jpg'

$filename = substr($fb_image_url, strrpos($fb_image_url, '/') + 1);

file_put_contents('upload/user_pic/original/'.$filename, file_get_contents($fb_image_url));

これを行った後、サーバーはファイル名を正常に受信しますが、0 バイトです。

php.ini を確認したところ、allow_url_fopen がオンになっています。

アップロードフォルダの許可も問題ありません。

4

3 に答える 3

1

その URL をブラウザに入力するだけです。

https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/274661_1171545457_6475606_n.jpg

そして、応答で404 Not Foundを受け取りました。これにより、ローカルで空のファイルを取得する理由が説明されます。最初にデータをロードし、受け取ったものを確認してから、検証に合格した場合はローカルに保存することを強くお勧めします。

于 2012-05-29T10:31:32.477 に答える
1

Facebook から画像をコピーするには、script/php プログラムに同じ許可が必要です。プログラム/FB API が検証/許可チェックに合格しない場合、FB は画像のダウンロードを許可しません。
アプリケーションが Facebook からこの画像をダウンロード/コピーする権限を持っていないように見えるため、0 バイトを取得しています。画像への PUBLIC アクセスを許可し、画像の対処中は FB アカウントをログインしたままにしてください

于 2012-05-29T10:41:11.167 に答える
0

ここに解決策があります。Facebookのプロフィールアドレスに問題がありました。

$fb_image_url = 'https://graph.facebook.com/'.$facebook_id.'/picture?type=large';

$filename = $fb_id.'_'.time().'.jpg';

$result = file_get_contents($fb_image_url);

file_put_contents('upload/user_pic/original/'.$filename, $result);

this_ でうまくいきました。うん!みんなありがとう!

于 2012-05-29T12:50:37.017 に答える