Archivo de la etiqueta: Php

Carga de archivos en Amazon S3 con PHP

Amazon S3 es almacenamiento para Internet. Está diseñado para facilitar a los desarrolladores la informática a escala web.

Amazon S3 proporciona una sencilla interfaz de servicios web que puede utilizarse para almacenar y recuperar la cantidad de datos que desee, cuando desee, y desde cualquier parte de la web. Concede acceso a todos los desarrolladores a la misma infraestructura económica, altamente escalable, fiable, segura y rápida que utiliza Amazon para tener en funcionamiento su propia red internacional de sitios web. Este servicio tiene como fin maximizar las ventajas del escalado y trasladar estas ventajas a los desarrolladores (descripción por Amazon).

¿Qué necesitamos?
– Una cuenta en amazon S3
– Librería de S3 de Amazon que pueden descargar aquí: S3.php
– PHP

Para este ejemplo armaremos sólo 1 archivo, con el fin de simplificar la guía. Entonces comencemos!

[sourcecode language=”php”]vim index.php[/sourcecode]

Comenzamos importando la librería S3 q se especifica más arriba

[sourcecode language=”php”]
// Incluimos la clase de Amazon S3
if(!class_exists(‘S3’))require_once(‘S3.php’);
[/sourcecode]

Definimos las keys de acceso, estás están especificados en la información de nuestra cuenta en AWS

[sourcecode language=”php”]
// Informacion de acceso al AWT
if(!defined(‘awsAccessKey’)) define(‘awsAccessKey’, ‘XXXXXXXXXXXXXXXXX’);
if(!defined(‘awsSecretKey’)) define(‘awsSecretKey’, ‘XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX’);
[/sourcecode]

Instanciamos la clase S3 para hacer la conección con Amazon

[sourcecode language=”php”]
// Instanciamos la clase de S3
$s3 = new S3(awsAccessKey, awsSecretKey);
[/sourcecode]

Definimos nuestro bucket o almacen de archivos (previamente creado en AWS)

[sourcecode language=”php”]
// Nombre del Bucket en Amazon S3
$bucket = “XXXXXXX”;
[/sourcecode]

Luego con un formulario enviamos el archivo que deseamos cargar

[sourcecode language=”php”]// Cuendo presiono el boton Upload
if(isset($_POST[‘Submit’])){
// Recibo las variables por POST
$fileName = $_FILES[‘theFile’][‘name’];
$fileTempName = $_FILES[‘theFile’][‘tmp_name’];
// Creo un nuevo bucket de Amazon S3
$s3->putBucket($bucket, S3::ACL_PUBLIC_READ);
// Muevo el archivo de su ruta temporal a su ruta definitiva
if($s3->putObjectFile($fileTempName, $bucket, $fileName, S3::ACL_PUBLIC_READ)) {
echo “Archivo subido correctamente.”;
}else{
echo “”No se pudo subir el archivo.”;
}
}[/sourcecode]

Creamos nuestro formulario

[sourcecode language=”php”]



[/sourcecode]

Listamos los archivos en nuestro Bucket en Amazon S3

[sourcecode language=”php”]

Lista de archivos en el S3

getBucket($bucket);
foreach ($contents as $file){

$fname = $file[‘name’];
$furl = “http://”.$bucket.”.s3.amazonaws.com/”.$fname;

// Imprimo el archivo que voy encontrando
echo “$fname
“;

}
?>
[/sourcecode]

Puedes descargar el archivo completo ejemplo_php_amazons3

Saludos y gracias por su visita!