使用curl从file_get_contents / imagecreatefromstring上传

时间:2012-09-16 03:03:18

标签: php stream

我有以下代码:

$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(),还可以替换其他内容吗?

还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

imagecreatefromstring返回GD句柄。没有与之关联的tmp_name,name, OR 类型。您试图将GD处理视为基于标准的基于POST的$ _FILES数据结构的结果。

GD手柄无法传递给curl进行上传,因为它并不是真正的图像,并且直到您使用imagejpeg / imagepng / imagewhatever将其保存到文件中时才会被删除然后可以指出卷曲,例如

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

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

curl...