Home > TYPO3 > s3example – TYPO3 i Amazon S3

s3example – TYPO3 i Amazon S3

logo_awsZgodnie 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 http://developer.amazonwebservices.com/connect/entry.jspa?externalID=123. 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
  1. public function getImagesFromBucket()
  2.  {
  3.   // to get files list, we must only have bucket name
  4.   $data = $this->s3->getBucket($this->bucketName);
  5.   if (!is_array($data)) return array();
  6.   $returnArray = array();
  7.   foreach ($data as $key => $row)
  8.   {
  9.    $returnArray[$key] = array();
  10.    //creating the url of image
  11.    $returnArray[$key]['file'] = 'http://'.$this->bucketName.'.s3.amazonaws.com/'.$row['name'];
  12.    $returnArray[$key]['title'] = $row['name'];
  13.    $returnArray[$key]['size'] = $row['size']/1024;
  14.    $returnArray[$key]['time'] = date("d/m/Y H:i",$row['time']);
  15.  
  16.   }
  17.   return $returnArray;
  18.  }

Upload pliku do bucketu:

//models/class.tx_s3example_models.php
  1.  public function sendFile($fileSource, $fileName)
  2.  {
  3.   $this->s3->putBucket($this->bucketName, tx_amazon_s3_api::ACL_PUBLIC_READ);
  4.   return $this->s3->putObjectFile($fileSource, $this->bucketName, $fileName, tx_amazon_s3_api::ACL_PUBLIC_READ);
  5.  }

Pliki do pobrania:

  • Share/Save/Bookmark

Bartosz Aninowski TYPO3 amazon, api, s3

  1. Brak komentarzy
  1. Brak jeszcze trackbacków