- No lo sube si la extencion no esta en el array
- Si el archivo tiene espacios los cambio por "_"
- Si sobrepasa el tamaño lo dice y no deja
- Si el directorio a subir no existe lo crea (esto hace que el upload sirva con solo editar url)
- crea prefijos para que no se repitan los archivos
- Seguridad 100% garantizada ya que lee la extencion que esta hasta el ultimo
- Comentarios para que lo entiendas
EDITADO Gracias spider_boy y a los demas por opinar :P
Espero los sirve, dejo el codigo
Código PHP:
<?
if($_GET[accion] == "subir"){
if($_POST[subir]){
/* Damos datos de preferencia */
$prefijo = substr(md5(uniqid(rand())),0,5);//esto es un numero en md5 con 5 caracteres para que no se repitan las o archivos
$url_upload="http://ejemplo.com/upload/";//ponemos url del upload (es necesaria la "/" al final)
$carpeta= "host";//carpeta que se creara (ne es necesario crearla manualmente)
$extenciones_permitidas=array('jpg','jpeg','png','bmp');//puedes añadir las que quieras
$tamano_max="2097152";//tamaño maximo en bytes (predeterminado 2mb)
/* Rrgla de tres para convertir Bytes por Mbytes*/
$uno=1;
$unomb=1048576;
$mbo1= $tamano_max * $uno;
$mb=$mbo1 / $unomb;
/* Obtenemos los datos del archivo */
$archivo_nombre = $_FILES["cosa"]['name'] ;
$archivo_tamano = $_FILES["cosa"]['size'] ;
$archivo_temporal = $_FILES["cosa"]['tmp_name'] ;
$archivo_tipo = $_FILES["cosa"]['type'] ;
/* checamos si selecciona archivo */
if($archivo_nombre == ""){
echo"No has seleccionado archivo";
exit();
}
/* checamos si el directorio existe, si no, lo crea :P */
if(!is_file($carpeta)){
mkdir($carpeta,0777);
}
/* checamos el tamaño */
if($archivo_tamano>$tamano_max){//si es mas grande lo decimos y dejamos de ejecutar
echo"Archivo Muy pesado. Maximo ".$mb." MB";
exit();
}
/* obtenemos extencion */
$obtener_extencion=explode(".",$archivo_nombre);//separamos desde punto
$extencion_max=end($obtener_extencion);//leemos extencion (gracias spider_boy no sabia de esa funcion)
$extencion=strtolower($extencion_max);//convertimos a minusculas
/* checamos extencion */
if(in_array($extencion,$extenciones_permitidas)){//si es permitida lo subimos y lo decimos
$nombre_chido=$obtener_extencion[0];
$nombre_chido=str_replace(" ","_",$nombre_chido);
$completa= "".$carpeta."/".$prefijo."_".$nombre_chido.".".$extencion."";//creamos ruta completa
/* subir archivo */
move_uploaded_file($archivo_temporal,$completa);
echo"<strong>Url</strong>: ";
echo "".$url_upload."".$completa."";
echo"<br />";
echo"<strong>Tamaño</strong>: ";
echo "".$archivo_tamano." bytes";
echo"<br />";
echo"<strong>Tipo</strong>: ";
echo "".$archivo_tipo."";
echo"<br />";
exit();
}else{//si no permitimos la extencion lo decimos
echo"Extencion no permitida";
exit();
}
exit();
}
exit();
}
?>
<form action="<? echo $_SERVER['PHP_SELF'] ?>?accion=subir" method="post" enctype="multipart/form-data">
<input name="cosa" type="file" />
<input name="subir" type="submit" value="Subir" />
</form>