Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/05/2010, 12:22
Avatar de dedydamy
dedydamy
 
Fecha de Ingreso: marzo-2010
Ubicación: Aca :D
Mensajes: 78
Antigüedad: 14 años, 1 mes
Puntos: 4
[Aporte] Upload php

Buenos, pues les dejo este upload hecho por mi que tiene las siguientes caracteristicas
  1. No lo sube si la extencion no esta en el array
  2. Si el archivo tiene espacios los cambio por "_"
  3. Si sobrepasa el tamaño lo dice y no deja
  4. Si el directorio a subir no existe lo crea (esto hace que el upload sirva con solo editar url)
  5. crea prefijos para que no se repitan los archivos
  6. Seguridad 100% garantizada ya que lee la extencion que esta hasta el ultimo
  7. 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&ntilde;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>

Última edición por dedydamy; 25/05/2010 a las 19:28