2017-03-08 53 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