0

phpからcurlを使用して画像をダウンロードしようとしていますが、画像をサーバーに保存する代わりに、ランダムな文字をWebブラウザー画面に出力しているだけです。コードは次のとおりです。

$final['IMAGE'] = 'http://www.google.com/images/srpr/logo3w.png';

$imagename = trim(basename($final['IMAGE']));

$url  = $final['IMAGE'];
$path = '/media/import/';
$path .= $imagename;

$fp = fopen($path, 'w');

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);

$data = curl_exec($ch);

curl_close($ch);
fclose($fp);
4

3 に答える 3

6

curl_exec($ch);出力を画面に直接出力します。CURLOPT_RETURNTRANSFER-オプションを使用すると、彼の動作を停止できます。

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

詳細については、PHP マニュアル「curl_setopt」を参照してください。

編集

この小さなスクリプトは、ファイルを書き込み可能なディレクトリにダウンロードします。

// file handler
$file = fopen(dirname(__FILE__) . '/test.png', 'w');
// cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'somethinsomething.com/something.png');
// set cURL options
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// set file handler option
curl_setopt($ch, CURLOPT_FILE, $file);
// execute cURL
curl_exec($ch);
// close cURL
curl_close($ch);
// close file
fclose($file);

今回CURLOPT_FILEは、トリックを行う - オプションです。詳細については、以前と同じリンクを参照してください。

于 2012-08-13T18:19:49.847 に答える
0

.png であることが確実な場合は、imagecreatefromstring() と imagepng() を使用できます。

$c = curl_init( $final['IMAGE'] );
curl_setopt( $c, CURLOPT_HEADER, 0 );
curl_setopt( $c, CURLOPT_RETURNTRANSFER, 1 );
$binary = curl_exec( $c );
curl_close( $c );

$imagename = trim(basename($final['IMAGE']));
$url  = $final['IMAGE'];
$path = '/media/import/';
$path .= $imagename;

$img = imagecreatefromstring( $binary );
imagepng( $img, $path, 0 );
于 2012-08-13T18:21:22.253 に答える
0

copy() を使用するだけです。

copy("http://www.google.com/images/srpr/logo3w.png", "/media/import/logo3w.png");
于 2012-08-13T18:21:40.413 に答える