2017-03-08 83 views
-1

我有我工作的一个网站,它使用imgur API上传用户的个人资料图片,但它需要使用base64使用我具备的功能:转换投稿图像的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编码。

谢谢:)

编辑:这篇文章是不同的一个标记为复制监守我想知道如何将表单数据发送的其他地方,而不是把它上传到我的网站。上传文件的

+0

的可能的复制(HTTP [使用PHP上传文件]: //stackoverflow.com/questions/35253550/upload-a-file-using-php) –

+0

@Lashane我不是要上传,我试图从一个帖子的形式获得的base64数据。 – RedXTech

回答

2

信息包含$ _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); 
+0

我会尽快,我可以尝试了这一点,但我想$ _FILES的的var_dump,这是一个空数组 – RedXTech

+0

@RedXTech HTML表单有权加密类型?它是enctype ='multipart/form-data'?你用阿贾克斯?发表你的表格 – bxN5

+0

给我几分钟的代码,我会尽快把它拿出来。 – RedXTech