使用 curl 从 file_get_contents / imagecreatefromstring 上传



我有以下代码:

$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

我可以用tempnam()代替$image['tmp_name'],但其他东西呢?

有其他方法可以做吗?

imagecreatefromstring 返回一个 GD 句柄。没有与之关联的tmp_name、名称或类型。您尝试将该 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...

相关内容

  • 没有找到相关文章

最新更新