sábado, 21 de enero de 2012

Usar la SDK de AmazonS3 para subir ficheros con PHP

Muy simple y en sencillos pasos os explicaré como podemos subir nuestros ficheros a nuestro almacen de amazon S3.

Para empezar nos descargamos la SDK de la web oficial Descargar SDK para PHP.
Descomprimimos y configuramos el fichero config-sample.php y realizamos lo siguiente:
  • introducimos nuestra key donde pone 'key' => 'PegamosNuestraKey', 
  • y la clave secreta donde pone 'secret' => 'PegamosNuestraClave',
  • por último guardamos el fichero en el mismo sitio con el nombre config.php

Una vez echo esto solo nos queda crear el fichero php con la siguiente información.
authenticate($bucket, AmazonS3::ACL_PUBLIC);

//indicamos la ruta donde almacenarlo del bucket y la ruta del fichero a copiar.
   $s3->batch()->create_object($bucket, 'carpeta_bucket/nombreNewFichero.txt', array(
    'fileUpload' => 'FICHEROaCOPIAR.txt',
    'acl' => AmazonS3::ACL_PUBLIC
   ));

//para acabar subimos el fichero
   $file_upload_response = $s3->batch()->send();

//si queremos comprobar que todo está correcto
   if ($file_upload_response->areOK()) echo "Fichero subido correctamente";
   else echo "Error, no se ha subido el fichero";
?>
Suficiente ya esta listo, solo tengo dos pegas hay que controlar que el fichero se ha subido bien, antes de eliminar el original o desecharlo por que puede que si se da el caso de que hay muchas peticiones de subida alguna no termine correctamente. La otra pega que no se si es un problema de mi framework que he usado pero los ficheros que quieres subir tienen que estar en el mismo directorio que el php que los va ha subir, tiene fácil solución con usar copy(); 

Espero que os sea útil. Se que últimamente no hago mas que hablar de PHP me encantaría probar la SDK para JAVA o los otros lenguajes para la que esta disponible, prometo que en mis futuros post intentare dejar de hablar tanto de PHP.

un saludo a todos