Cómo subir archivos al servidor con PHP

Recientemente he tenido que crear un pequeño script para subir ficheros al servidor desde una web desarrollada en PHP. Normalmente este tipo de herramientas se utilizan para subir imágenes, ficheros adjuntos o para subir un avatar en un foro. En mi caso lo he utilizado para un concurso en el que cada participante debe subir tres imágenes de su proyecto.

Para poder hacer un upload de archivos en PHP necesitamos crear un formulario con un parámetro especial enctype=”multipart/form-data”. Este parámetro permite indicar que vamos a enviar, además de texto, varios ficheros al puslar el submit del formulario. Los elementos necesarios para subir los ficheros son los input file, de los cuales crearemos tantos como deseemos (asignado a cada uno un name único).

El formulario de envío nos quedaría tal que así:

<form name=”form” action=”alta.php” method=”POST” enctype=”multipart/form-data” >
<input type=”hidden” name=”MAX_FILE_SIZE” value=”1500000″>
<input name=”nombre” value=”” size=”30″>
<input name=”email” value=”” size=”30″>
<input name=”file1″ type=”file”>
<input type=”submit” value=”Enviar”>
</form>

El fichero que gestiona los datos del formulario alta.php recibirá en el contexto 3 elementos: el name, el email, y el archivo file1. Los dos primeros los recuperaremos de forma convencional a través de $_POST, mientras que el archivo lo recuperaremos a través de $_FILES, que es un array que almacena los datos del mismo: tamaño, formato, nombre, etc. El input MAX_FILE_SIZE nos permite indicar cuál es el tamaño máximo de los archivos que se pueden subir. El valor está en kbs. Sin embargo, esto se puede comprobar posteriormente en alta.php a través de la variable size del array $_FILES. Ahora lo veremos.

<?php

$nombre_archivo = $_FILES [ “file1” ] [ “name” ];
$tipo_archivo = $_FILES [ “file1” ] [ “type” ];
$tamano_archivo = $_FILES [ “file1” ] [ “size” ];
$nombre_temp = $_FILES [ “file1” ] [ “tmp_name” ];

if (((strpos($tipo_archivo, “gif”) || strpos($tipo_archivo, “jpeg”) || strpos($tipo_archivo, “png”) && ($tamano_archivo < 1500000))) {

if (is_uploaded_file($nombre_temp)) {

copy($nombre_temp, “”directorio/”.$_FILES [ “file1” ] );

}else{

echo “Se ha producido un error al intentar subir el archivo”;

}else{

echo “El archivo seleccionado no es una imagen o excede el 1.5mb de peso”;

} ?>

Al igual que recogemos del contexto cualquier elemento de un formulario, recogeremos el array con los datos del archivo con $_FILES. Una vez hemos recuperado sus características, comprobamos que cumple con los requisitos del formulario: que es una imagen (es gif, jpg ó png), esta comprobación, en vez de hacerla con los MIMEs (‘image/jpeg’), se hace de forma más sencilla buscando la extensión en el nombre del archivo subido. Además, también se comprueba que pesa menos de 1.5mb. Podemos añadir cuantas comprobaciones deseemos, basta con meterlas a continuación del primer if.

En caso de que el fichero subido cumpla con todos los requerimientos, procederemos a alojarlo en nuestro servidor. El proceso hace una copia temporal del archivo en el servidor para su posterior tratamiento. La función is_uploaded_file se encarga de indicarnos si se ha realizado correctamente o no. En caso afirmativo, se procede a hacer una copia en nuestro servidor gracias a la función copy. Esta función recibe dos parámetros: nombre y path temporales del archivo, y el path o ruta donde queremos guardarlo. Es necesario que el directorio del ftp donde queremos alojar nuestras imágenes tenga permisos de escritura. En nuestro caso vamos a copiar los archivos en un directorio creado a tal efecto.

Cómo hacer un upload en PHP para subir archivos al servidor
8 Comentarios

Photl.com, galería de fotos gratis de alta resolución

Hace tiempo comenté la existencia de galerías de imágenes o fotos con licencias de libre distribución (Creative Commons) que nos permiten utilizarlas en cualquier trabajo (según las especificaciones de las licencias). A Flickr o StockFoto podemos sumar Photl.com. Esta nueva galería de imagenes gratuitas dispone actualmente de cerca de 220.000 imagenes. Según afirman, el ratio de crecimiento mensual son 10k a 15k imágenes nuevas. Todas las fotos están bajo licencia extendida de uso (Extended Royalty Free) y son absolutamente gratis y disponibles para cualquier uso, incluso comercial.

Photl.com, galería de fotos gratis de alta resolución

La calidad de las fotos es realmente buena, aunque podemos encontrar de todo, aunque nos dicen que las dimensiones mínimas de todas las fotos son 4368?2912px (alta resolución). Hay fotos que pueden competir perfectamente con galerías de pago como GettyImages y que podemos conseguir de forma gratuita sin tener que pagar suscripciones o descargas. La única pega es que sólo permiten descargar 35mb diarios, es decir, alrededor de 30 fotos cada día (ya sabes, reinicias el router y a correr). Para poder descargar las imágenes que deseemos debemos registrarnos.

Lo que no me gusta nada es el buscador. En cualquier galería de fotos por suscripción o de pago te permiten seleccionar entre varios idiomas y las búsquedas las puedes realizar en el que hayas elegido. Por ejemplo, si eres español, seleccionarás el castellano y buscas por términos en esta lengua. Sin embargo, en Photl si seleccionas Español y buscas por fruta, no te encuentra ningún resultado. Tienes que buscar por términos en inglés, fruits.

También implementan en el buscador un filtro por colores que tampoco me gusta nada. Por un lado sólo te permite elegir entre un puñado de colores y por otro, si quieres buscar todas las imágenes que tengan de un determinado color, no te devuelve nada. Lo que hace es buscarte todas las fotos o imágenes de ese color según la keyword por la que hayas buscado. Si pones fruits y seleccionas verde, la pantalla se te inundará de kiwis, uvas y manzanas.

Los resultados puedes organizarlos por volúmen de descargas o fechas de descarga¿?. También nos permiten ver qué keywords están relacionadas con nuestra búsqueda y las imágenes mostradas, además de una interesante nube de tags para ver cuáles son las keywords con más fotos.

Fuente | http://ulczyk.blogspot.com
Más información | http://www.photl.com

1 Comentario

Arranca Google Chrome en modo incógnito automáticamente

Arranca Google Chrome en modo incógnito automáticamente

La opción de Modo Incógnito de Google Chrome nos permite navegar sin que se guarden las páginas web visitadas o los ficheros descargados en el historial de navegación. Además, al cerrar la ventana de modo incógnito, se borran todas las cookies de las páginas a las que se haya accedido. Es una forma de eliminar los rastros de nuestra actividad de navegación en un ordenador.

Se pueden tener abiertas al mismo tiempo una ventana de Google Chrome en modo incógnito y otra en modo normal. La forma de abrir una ventana en modo incógnito es pulsando en el icono de la llave inglesa y haciendo click en la opción ‘Nueva ventana de incógnito‘. Una forma más rápida es pulsando al mismo tiempo las teclas CTRL + SHIFT + N.

Si lo que quieres es que al abrir el Google Chrome automáticamente sea en modo incógnito, basta con añadir un parámetro en el acceso directo. En el campo Destino debemos añadir ‘–incognito’  (dos guiones y la palabra incognito). El path nos quedaría tal que así:

“C:\Documents and Settings\n4gash\Configuración local\Datos de programa\Google\Chrome\Application\chrome.exe” –incognito

1 Comentario

The Smashing Book, libro de diseño gráfico, desarrollo y marketing web

Smashing magazine es uno de los blogs de diseño y desarrollo web más importantes en el panorama internacional. En él participan numerosos profesionales del sector que escriben tutoriales, guías, tips, recursos, etc.

A finales de septiembre van a publicar The Smashing Book, libro impreso que trata sobre las mejores prácticas del diseño web actual. En el libro podemos encontrar diversas técnicas, trucos y prácticas de programación, usabilidad y optimización, y nos mostrarán cómo crear interfaces de usuario de éxito utilizando principios de marketing para aumentar el ratio de conversión. Podremos saber qué tipografías y colores debemos elegir para lograr diseñar páginas web intuitivas y efectivas.

El libro está a todo color con cerca de 300 páginas. Estará disponible para todo el mundo (gastos de envío gratis a EEUU y Alemania) y nos ofrecen una garantía de devolución del dinero de 30 días. Puedes hacer un pre-order antes de que se publique a finales de septimebre, beneficiándote de un 20% de descuento. Por aproximadamente 23€ (gastos de envío incluídos) he comprado mi ejemplar, ya os diré qué tal está.

The Smashing Book, libro de diseño gráfico, desarrollo y marketing web

El libro se divide en varios capítulos:

  • El arte y ciencia de las CSS
  • Diseño de interfaces de usuario en aplicaciones modernas
  • Tipografías en la web: reglas, guías y errores comunes.
  • Principios de usabilidad para webs modernas
  • Guía del uso del color en diseños web y usabilidad<
  • Procedimientos de optimización para páginas web
  • Diseñar para vender: incrementa el ratio de conversión
  • Cómo convertir una página web en una marca notable
  • Aprendiendo de expertos: entrevistas y análisis
  • La historia de Smashing

Más info | http://www.smashingmagazine.com

Sin Comentarios

Typekit, utiliza tipografías no estándar en tu página web

Typekit, utiliza tipografías no estándar en tu página web

Utilizar tipografías no estándar en una página web a día de hoy requiere la utilización de tecnologías sIFR, mediante javascript, flash o imágenes. Todo esto cambiará con el atributo @font-face de CSS3, pero hasta que podamos utilizarlo, tenemos que recurrir a otros recursos.

En Wwwhatsnew hablan de TypeKit, un proyecto todavía en beta cerrada (se puede solicitar acceso o que te envíen un email cuando sea público) que nos ofrece varios packs de fuentes que podemos instalar fácilmente en nuestra página web importando un javascript e insertando varios códigos. A través de un panel podemos ir eligiendo qué fuentes queremos incorporar a nuestro paquete.

Más info | http://www.typekit.com

Sin Comentarios

Diferencias entre GET y POST

Vía anieto2k he encontrado una interesante guía donde nos explican cuáles son las diferencias entre GET y POST, los métodos  para pasar variables por URL y recuperarlas del contexto. El funcionamiento de las dos es el mismo, con la única diferencia de que con el GET veremos las variables en la URL, mientras que el POST sólo nos mostrará la URI y la página donde estamos.

// GET

www.mitienda.com/tienda.php?cat=2&item&24&lan=es

// POST

www.mitienda.com/tienda.php

El uso de un método u otro depende de la información que vayamos a pasar. En la guía nos indican qué método debemos utilizar para cada procedimiento. A modo de resumen:

  • Utiliza GET para acciones seguras y POST para las inseguras
  • Utiliza POST si envias datos privados (passwords, números de tarjetas de crédito, etc)
  • Utiliza POST cuando envíes mucha información (más de 2024 caracteres)
  • Utiliza GET en entornos AJAX


Diferencias entre GET y POST

Más info | http://carsonified.com/blog/dev


1 Comentario