【问题标题】:Upload with curl from file_get_contents / imagecreatefromstring使用 curl 从 file_get_contents / imagecreatefromstring 上传
【发布时间】:2012-09-16 03:03:18
【问题描述】:

我有以下代码:

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

并且想发出一个 curl 请求:

$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(),但是还有其他东西吗?

还有别的办法吗?

【问题讨论】:

    标签: php stream


    【解决方案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...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 2012-08-08
      • 2012-06-19
      • 2011-06-23
      • 1970-01-01
      相关资源
      最近更新 更多