2013-11-14 67 views
0

我有下面的代碼和它的作品上傳一個圖片完全正常使用他們的API來Imgur:PHP:上傳多張圖片到imgur一次

$client_id = $myClientId; 
    $file = file_get_contents($_FILES["file"]["tmp_name"]); 

    $url = 'https://api.imgur.com/3/image.json'; 
    $headers = array("Authorization: Client-ID $client_id"); 
    $pvars = array('image' => base64_encode($file)); 

    $curl = curl_init(); 

    curl_setopt_array($curl, array(
     CURLOPT_URL=> $url, 
     CURLOPT_TIMEOUT => 30, 
     CURLOPT_POST => 1, 
     CURLOPT_RETURNTRANSFER => 1, 
     CURLOPT_HTTPHEADER => $headers, 
     CURLOPT_POSTFIELDS => $pvars 
    )); 

    $json_returned = curl_exec($curl); // blank response 

    $json = json_decode($json_returned, true); 

    curl_close ($curl); 

不過,我需要一次上傳多張圖片。在客戶端,用戶將有多個<input type="file" />字段。我現在完全停留在弄清楚在何處以及如何修改此代碼,以便在以數組形式傳遞到服務器時處理多個圖像上載。有沒有人有任何想法?

回答

3

更改標記如下:

<form action="file-upload.php" method="post" enctype="multipart/form-data"> 
    Send these files:<br /> 
    <input name="file[]" type="file" multiple="multiple" /><br /> 
    <input type="submit" value="Send files" /> 
</form> 

現在,你可以通過$_FILES陣列循環使用foreach,像這樣:

foreach ($_FILES['file']['tmp_name'] as $index => $tmpName) { 
    if(!empty($tmpName) && is_uploaded_file($tmpName)) 
    { 
     // $tmpName is the file 
     // code for sending the image to imgur 
    } 
} 
+0

感謝您的答覆。我正在考慮創建一個循環,但我想知道是否有更好的方法?例如,如果我理解正確,Imgur會允許通過他們的API進行多次上傳嗎?如果是這樣,那麼通過一個'foreach'循環來做一個一個的上傳會不會更快? – user1775598

+0

@ user1775598:你看過那裏的API手冊嗎?據[我可以看到](https://api.imgur.com/endpoints/image#image-upload),這是不可能的一個電話。 –

+0

@ user1775598:正如Glavic上面所說的,一次調用API是不可能的。唯一的方法是循環遍歷每個文件,然後單獨處理它們。 –