XtraUpload, un “Megaupload” en CodeIgniter
Vía Webmastelibre me entero de que existe un software gratuito creado en CodeIgniter que nos permite fácilmente crear nuestro propio sistema de "uploads" de archivos, que ahora están de moda los típicos "Rapidshare", "MegaUpload", etc..
Si mas no es interesante echarle un vistazo a estas herramientas, ya que así podemos ver como están hechas las aplicaciones reales puesto que aquí normalmente trabajamos sobre tutoriales de ejemplos simples de aplicaciones.
XtraUpload, que asi se llama la aplición está escrito en PHP usando, como ya hemos dicho, el Framework de CodeIgniter. Tiene todas las caracteristicas que te esperarías para este tipo de paginas:
- Control de usuarios, tanto gratuitos como "Premium".
- Usuarios Premium tienen opciones interesantes adicionales.
- Puedes especificar tipos de fichero, tamaños y en general configurar la aplicación a tu gusto.
- Permite pagos con PayPal y otros.
Lo interesante tambien de estas aplicaciones es indagar un poco en el codigo y ver como hacen determinadas cosas, como utilizan ciertas librerias, tanto de CodeIgniter como creadas por ellos mismos. Yo os recomiendo que echeis un vistazo de:
- Como está hecho todo el tema de verificación de usuarios (login, etc..)
- Todo lo referente a las descargas de archivos, control deMB bajados, y otras caracteristicas
- Como hacen para conectar con las pasarelas de pagos de PayPal, 2CheckOut, MoneyBrokers, StormPay y eGold.
- Upload, como lo gestionan, como lo controlan, etc.
- Como funcionan con los templates y themes.
Yo la verdad que le he pegado un vistazo y he encontrado muchas cosas interesantes, y esta es otra manera de aprender.
EDITADO: el proyecto ha sido descontinuado, pero colgaron el código en google code: enlace.
Problemas
Bueno por desgracia parece que alguien logró hackear el blog o alguna aplicación y hemos estado teniendo varios problema para restablecerlo todo.
Por razones de seguridad los ejemplos del "Subidor de Imágenes" han sido totalmente eliminados, aunque he dejado el código para que os lo podáis bajar.
Si veis algún problema o algo no dudéis en comentármelo.
Subidor de Imagenes (Tercera parte): Subir y miniaturizar
Bueno seguimos con lo del ultimo día. Ahora lo que nos queda hacer es el controlador que se ocupe de subir nuestro fichero en el servidor y luego cree una imagen en miniatura de esta (thumbnail).
Como ya dije en el articulo anterior, usaremos estas dos librerías: File Uploading Class y Image Manipulation Class.
Al ser un solo formulario lo haremos todo en una misma función del controlador. Para empezar necesitaremos subir el archivo al servidor y a su vez almacenar la información en la base de datos:
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '5000';
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
if(!$this->upload->do_upload("imagen"))
{
echo $this->upload->display_errors();
}
else
{
$data = $this->upload->data();
$this->db->query("INSERT INTO `imagenes` (`imagen`, `fecha`, `ip`) VALUES (?, ?, ?)", array($data['file_name'], time(), $_SERVER['REMOTE_ADDR']));
Como veis es muy fácil de usar, hay que especificar las distintas opciones que queremos en el array config (hay mas opciones disponibles en la guía de usuario de CI). Le pasamos el "name" input del formulario para subir la imagen en la función "do_upload". Y luego simplemente añadir un registro en la base de datos con la información que nos da "$this->upload->data()";
Ahora necesitaremos que a partir de esta imagen se cree un thumbnail, lo haremos así:
