s3example - TYPO3 i Amazon S3
Zgodnie z obietnicą w artykule TYPO3, memcache i nginx na amazon EC2, przedstawię wtyczkę do obsługi bazy zdjęć z wykorzystanie usługi Amazon S3. Wtyczka, którą stworzyliśmy może służyć jako podstawa do budowania serwisów z wykorzystaniem CDN Content Distribution Network. W obecnych czasach, gdzie prosty pomysł może przerodzić się w potężny serwis o ogromnym zapotrzebowaniu na serwery i przestrzeń dyskową, warto wiedzieć jak działa S3 i jak skutecznie go wykorzystywać. Rozszerzenie jest napisane zgodnie z paradygmatem MVC, który będzie standardem dla wtyczek w wersji TYPO3 4.3
Wymagania
Niezbędne do zabawy jest posiadanie konta s3. Niestety wymaga to użycia karty kredytowej bo nic nie jest za darmo :). Usługę można uruchomić tu: Amazon Web Services.
Amazon API
Wszystkie usługi Amazon'a posiadają bardzo szczegółową dokumentacją. Opis API s3 można znaleźć pod adresem developer.amazonwebservices.com/connect/entry.jspa. My dla wygody postanowiliśmy zaadoptować klasę napisaną przez Donovana Schönknecht'a, o której więcej można poczytać tutaj. Amazon S3 PHP class posiada wszystko co niezbędne do listowania, dodawania, usuwania plików oraz zarządzania bucketami.
Integracja z TYPO3
W przykładowej wtyczce o nazwie evo_s3_gallery, znajdziesz podstawy użycja s3 API (TER: amazon_s3_api ). Cały kod jest bardzo prosty a my skupiliśmy się jedynie na obsłudze listowania i przesyłania plików.
Listowanie zawartości bucketu:
//models/class.tx_s3example_models.php public function getImagesFromBucket() { // to get files list, we must only have bucket name $data = $this->s3->getBucket($this->bucketName); foreach ($data as $key => $row) { //creating the url of image $returnArray[$key]['file'] = 'http://'.$this->bucketName.'.s3.amazonaws.com/'.$row['name']; $returnArray[$key]['title'] = $row['name']; $returnArray[$key]['size'] = $row['size']/1024; return $returnArray; }
Upload pliku do bucketu:
//models/class.tx_s3example_models.php public function sendFile($fileSource, $fileName) { $this->s3->putBucket($this->bucketName, tx_amazon_s3_api::ACL_PUBLIC_READ); return $this->s3->putObjectFile($fileSource, $this->bucketName, $fileName, tx_amazon_s3_api::ACL_PUBLIC_READ); }
Pliki do pobrania:


Najnowsze komentarze
Powered by Disqus