1

私は次のコードを持っています:

$image = imagecreatefromstring(file_get_contents('http://externaldomain.com/image.png'));

そして、カールリクエストをしたい:

$files = array();
$files[] = '@' . $image['tmp_name'] . ';filename=' . $image['name'] . ';type=' . $image['type'];

$ch = curl_init('index.php?route=upload');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $files);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec($ch);

$image主な問題は、変数からファイル名と拡張子を取得する方法です。

に置き換えることはできます$image['tmp_name']tempnam()、他のものはありますか?

別の方法がありますか?

4

1 に答える 1

1

imagecreatefromstringはGDハンドルを返します。tmp_name、name、ORタイプは関連付けられていません。そのGDハンドルを、標準のPOSTベースの$_FILESデータ構造の結果であるかのように処理しようとしています。

GDハンドルは、実際には画像ではないため、アップロードのためにcurlに渡すことはできません。また、imagejpeg / imagepng / imagewhateverを使用してファイルに保存するまでは渡されません。この場合、curlをポイントできます。

$image = imagecreatefromstring(...);
imagejpeg($image, 'tempfile.jpg');

$files[] = '@tempfile.jpg;filename=tempfile.jpg;type=image/jpeg';

curl...
于 2012-09-16T03:23:55.447 に答える