У меня есть следующий код, и он отлично работает для загрузки одного изображения в Imgur с использованием их API:
$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" />
. Я полностью застрял сейчас, когда выяснял, где и как мне нужно будет изменить этот код, чтобы обрабатывать несколько загрузок изображений, когда они попадают на сервер в виде массива. У кого-нибудь есть идеи?
Измените разметку следующим образом:
<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
массив $_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 } }