Показать все файлы изображений в папке Box через PHP

Я совершенно новичок в среде Box. Я использую текущий код для отображения всех изображений в веб-каталоге на сайте с самыми новыми файлами, перечисленными первыми:

<?php
   $path = 'images/';
   $files = scandir($path);
   $ignore = array( 'cgi-bin', '.', '..');

   # remove ignored files
   $files = array_filter($files, function($file) use ($ignore) {return !in_array($file, $ignore);});

   # get the modification time for each file
   $times = array_map(function($file) use ($path) {return filemtime("$path/$file");}, $files);

   # sort the times array while sorting the files array as well
   array_multisort($times, SORT_DESC, SORT_NUMERIC, $files);

   foreach ($files as $file) {
      echo '<div class="item">';
      echo '<a title="&copy;2013" rel="gallery" class="fancybox" href="images/'.$file.'"><img   src="images/'.$file.'" alt="'.$image.'" /></a>';
      echo '</div>';
   }
?>

Я хотел бы интегрировать Box API, чтобы получать файлы из моей папки Box вместо веб-папки. Возможно ли это с текущим API? Я попытался отобразить содержимое папки открытого доступа следующим образом:

<?php
   $params = array();
   $params['shared_link'] = array("access"=> "Open");
   $params = json_encode($params);
   echo $params;
   $key = "[my api key]";
   $token = "[token]";
   $ch = curl_init();

   curl_setopt($ch, CURLOPT_URL, "https://api.box.com/2.0/folders/kvpemb6rgohhr448r935"); //my box folder
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
   curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
   curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', "-H Authorization: Bearer $key",'Content-Length: ' . strlen($params), 'X-HTTP-Method-Override: GET'));
   $result = curl_exec($ch);
   curl_close($ch);
   print_r($result);
?>

Но получать только значения массива "{"shared_link":{"access":"Open"}}" на странице.

Я исчерпал свои возможности поиска в Google и Stackoverflow и не наткнулся на поток, пытающийся выполнить эту задачу. Спасибо за любое руководство/помощь.


person chuckcastle    schedule 19.09.2013    source источник


Ответы (2)


Если вы хотите получить элементы из папки «Открыть» в Box, я рекомендую вам проверить эту конечную точку. http://developers.box.com/docs/#shared-items

person paapfly    schedule 20.09.2013

Вот, может это вам поможет:

function getPictures($folderid, $access_token){
    //===================== Default cUrl options =================
    $options = array(
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_VERBOSE        => true,
        CURLOPT_HEADER         => false,
        CURLINFO_HEADER_OUT    => false,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => false,
    );
    $options[CURLOPT_HTTPHEADER] = array ("Authorization: Bearer ".$access_token);

    //======================= Proper url ==========================
    $url = "https://api.box.com/2.0/folders/{$folderid}/items";

    //======================= cUrl call ===========================
    $ch = curl_init($url);
    curl_setopt_array($ch, $options);
    $result = curl_exec($ch);
    curl_close($ch);
    $result = json_decode($result, true);

    // =============== Loop over items to search for photos =================
    $rez = array();
    if (isset($result['total_count']) && $result['total_count'] > 0){
        foreach ($result['entries'] as $elements){
            if (isPic($elements['name'])) $rez[] = $elements['name'];
        }
    }

    return $rez;
}

function isPic($value){
    $value = explode('.', $value);
    if (count($value) < 2) return false;
    $extensions = array ('jpg', 'bmp', 'png', 'gif');
    return in_array($value[1], $extensions);
}

Полезные ссылки из Box.com API:

http://developers.box.com/docs/#folders-retrieve-a-folders-items

or

http://developers.box.com/docs/#search

person Lucaci Andrei    schedule 24.09.2013