Dropbox galéria fajlok letöltése
Gondolom már TI is tapasztaltátok, mennyire gyorsan rá lehet kattanni egy-egy profi online szolgáltatásra. Jelen esetben Én is így jártam (korzó cipőben) a Drop Box-szal.A szolgáltatásról és a kliensprogramról röviden annyit, hogy 2 GB-ig ingyenes webes tárhely és egy lokális mappádat tart szinkronban a kliensprogram a weben lévő verzióval. Plusz ezt szorozd be akárhány géppel és adj hozzá néhány extra funkciót, mint a galéria létrehozása..
A fotógaléria szolgáltatását emelném ki, de ahhoz hogy megismerd regisztrálnod kéne az ingyenes 2 GB-os szolgáltatásért. Ha egy már a rendszerben lévő felhasználón keresztül regisztrálsz +250 MB tárhelyet kapsz Te is és a delikvens is. Ha bővebben a mya5.hu ingyenes szoftverek oldalon olvashatsz.
A galéria létrehozásáról
A kliens programod létrehoz egy dropbox/photos mappát. A photos-on belül hozzál létre egy új galéria mappát és bombázd bele a képeidet (ennyi). A többit a szoftver szinkron közben megcsinálja.
- átnevezi
- átméretezi
- megváltoztatja a mime típusát (aminek annyira nem örülök), főleg azért mert az eredeti méretét nem, de még is jpg típusként adja vissza pl. : egy png-nél
- Online prezentálja
- Linket küldhetsz róla
És mindezt úgy hogy akár rá sem kell nézned.. Csak jobb egérgombot nyomsz az adott mappán és ott lesz a link ami a galériádra mutat.

És itt jön az Elmegyógyintézet
Arra gondoltam ha már van Drop box-om miért ne fejlesztenék az új CMS-embe egy töltsd fel a Dropbox-ra, vagy szinkronizáld a Dropbox-ra, vagy csinálj Dropbox galériából helyi fájlokat. Előfordulhat, hogy egy fájt ami webről érkezik meg akarok osztani több gép között (Főleg ha vírusos :-) vagy fordítva. Miért ne lehetne egy galériát lokális mappából kezelni? Bár működik benne a jQuery Uploadify ami szintén kötegelt műveletként hajtja végre a feltöltéseket, de ez se maradjon ki.

A galéria fájlok kinyerésének egyik primitív változatát megosztom veletek (tesztelős fájlok). A proginak gyakorlatilag a linket kell megadni és Apache + PHP kell hozzá. Webszerverről futtatva leszedi az adott galéria képelemeit és belerakja egy mappába.
<?php error_reporting(E_ERROR); set_time_limit(0); //url or file $dropBoxGallery ="http://www.dropbox.com/gallery/3855935/1/arth2o-com?h=41472c"; //tplFileName #prefix#pic#num#.#extension# $fileNameTpl ="%spic%d.%s"; //directory $dir =dirname(__FILE__)."/img/"; mkdir($dir, 0777); //get HTML Gallery DropBox $html = file_get_contents($dropBoxGallery); //variable $patterns=$origin=$large=$thumb=array(); //get Images Path (l) preg_match_all('/(href=")(.*?)(")(.*)(rel="lightbox\[album\]")/im',$html, $patterns); if(!is_array($patterns[2])){ die("Picture not found"); } //thumb path $thumbs = explode("||", str_replace("/i/l/", "/i/m/", implode("||", $patterns[2]))); $origin = explode("||", str_replace("/i/l/", "/i/o/", implode("||", $patterns[2]))); $large = $patterns[2]; //array echo "<pre>";var_dump($origin, $large, $thumbs);echo "</pre>"; unset($origin, $large); //size prefix => variable $size=array( "m" => "thumb", "l" => "large", "o" => "origin", ); //contentType -> fileExtension $contentType=array( "image/jpeg" => "jpg", "image/png" => "png", "image/gif" => "gif", "image/bmp" => "bmp", ); $i=1; foreach($thumbs as $thumb){ $large =str_replace("/i/m/", "/i/l/", $thumb); $origin =str_replace("/i/m/", "/i/o/", $thumb); //3 image size foreach($size as $sizePrefix => $variable){ //get Pic $f=false; $f=fopen($$variable, "r"); /* * Array ( [wrapper_data] => Array ( [0] => HTTP/1.1 200 OK [1] => Server: dbws [2] => Date: Fri, 29 Jan 2010 15:54:23 GMT [3] => Content-Type: image/jpeg [4] => Connection: close [5] => content-length: 5212 [6] => pragma: no-cache [7] => cache-control: no-cache ) [wrapper_type] => http [stream_type] => tcp_socket/ssl [mode] => r+ [unread_bytes] => 1268 [seekable] => [uri] => http://photos-1.dropbox.com/i/m/... [timed_out] => [blocked] => 1 [eof] => ) */ $fileHeaders = array(); $fileHeaders = stream_get_meta_data($f); //fileSize $fileSize = array(); $fileSize = explode("content-length: ", trim($fileHeaders["wrapper_data"][5])); if($fileSize[1]<1){ //bibi van kicsi a fájlméret continue; } $kep=""; while(!feof($f)) $kep.=fread($f,$fileSize[1]); fclose($f); //[0] = Content-Type: [1] = mimetypes $tmp = array(); $tmp = explode("Content-Type: ", trim($fileHeaders["wrapper_data"][3])); //fileExtension $fileExtension = $contentType[$tmp[1]]; if(!empty($kep)): //fileName %spic%d.%s $fileName = sprintf($fileNameTpl, $sizePrefix, $i, $fileExtension); //save Pic file_put_contents("{$dir}{$fileName}", $kep); chmod("{$dir}{$fileName}", 0777); echo "{$dir}{$fileName}<hr>"; endif; } $i++; }
Vannak komplexebb megvalósítások pl.: Wordpress-hez, Joomla vagy Dupálhoz, de ehhez látogasd meg az API oldalát.