【问题标题】:Convert POSTed Image to Base64将发布的图像转换为 Base64
【发布时间】:2017-03-08 21:45:36
【问题描述】:

我有一个正在开发的网站,它使用 imgur api 上传用户的头像,但它需要 base64 才能使用我的功能:

function imgur($image) {
    $client_id = "client_id_some_numbers_and_stuff";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://api.imgur.com/3/image.json');
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Client-ID ' . $client_id));
    curl_setopt($ch, CURLOPT_POSTFIELDS, array('image' => base64_encode($image)));
    $reply = curl_exec($ch);
    curl_close($ch);
    $reply = json_decode($reply);
    $link = $reply->data->link;
    return $link;
}

我从表单输入 (<input type="file" id="pp" name="pp">) 获取图像。当我从$_POST["pp"]获取数据时,它被设置为文件名的字符串,没有任何用处。

如何获取图像文件并将其传递给imgur() 函数,或者将其转换为base64,然后将其传递给imgur() 函数,然后从函数中删除base64 编码。

谢谢:)

编辑:这篇文章与标记为重复的帖子不同,因为我想知道如何将表单数据发送到其他地方,而不是将其上传到我的网站。

【问题讨论】:

  • Upload a file using PHP的可能重复
  • @Lashane 我不想上传它,我想从帖子表单中获取 base64 数据。

标签: php forms file post base64


【解决方案1】:

上传文件的信息包含 $_FILES 数组

您需要在服务器中获取您的上传文件路径并将其转换为base64

$image = $_FILES["pp"]["tmp_name"];
$type = pathinfo($image, PATHINFO_EXTENSION);
$data = file_get_contents($image);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
imgur($base64);

【讨论】:

  • 我会尽快尝试,但我尝试了 $_FILES 的 var_dump,它是一个空数组
  • @RedXTech 你的 html 表单有正确的 enctype 吗?是 enctype='multipart/form-data' 吗?你用ajax吗?发布表单代码
  • 给我几分钟,我会尽快放上来。
  • 不得不稍微改变一些东西 - 只是在 $data 变量上调用 imgur() 并且效果很好。谢谢! (我最初也忘记更改 enctype 所以这是一个问题)
猜你喜欢
  • 2018-06-26
  • 2016-04-30
  • 2015-12-09
  • 2016-05-07
  • 2014-04-06
  • 2017-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多