Foros del Web » Programando para Internet » PHP »

[Aporte] Upload php

Estas en el tema de [Aporte] Upload php en el foro de PHP en Foros del Web. Buenos, pues les dejo este upload hecho por mi que tiene las siguientes caracteristicas No lo sube si la extencion no esta en el array ...
  #1 (permalink)  
Antiguo 25/05/2010, 12:22
Avatar de 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
  #2 (permalink)  
Antiguo 25/05/2010, 12:44
 
Fecha de Ingreso: octubre-2008
Mensajes: 365
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: [Aporte] Upload php

muy bueno

Salu2
__________________
No hay mail que por internet no venga
  #3 (permalink)  
Antiguo 25/05/2010, 13:11
Avatar de lukas4  
Fecha de Ingreso: octubre-2008
Ubicación: frente al pc
Mensajes: 496
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: [Aporte] Upload php

que tal, muy bueno el aporte, pero no seria mejor, primero revisar si la extension esta permitida, y despues checar si cumple con el tamaño adecuado, y ya despues crear el folder y subir la imagen? porque en el caso de que alguna imagen no llenara los requisitos las carpetas se quedarian ahi vacias S:
__________________
http://situcomo.blogspot.com
Karma is a Bitch... they said
  #4 (permalink)  
Antiguo 25/05/2010, 14:07
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: [Aporte] Upload php

¿Para qué sirve $existe="verdad"?

Y un consejo : Para evitar toda el cálculo matemático que haces para obtener la extensión, puedes usar explode() y end().
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 25/05/2010, 19:29
Avatar de dedydamy  
Fecha de Ingreso: marzo-2010
Ubicación: Aca :D
Mensajes: 78
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: [Aporte] Upload php

editado, gracias a todos

Alguna duda???
Les gusto???
Lo usan???
  #6 (permalink)  
Antiguo 25/05/2010, 19:51
 
Fecha de Ingreso: septiembre-2009
Mensajes: 67
Antigüedad: 14 años, 7 meses
Puntos: 2
Respuesta: [Aporte] Upload php

Buen aporte.

Podrías agregarle sessiones para mayor seguridad (para validar que los archivos se suben desde tu formulario), aunque eso ya es muy paranóico :P
  #7 (permalink)  
Antiguo 25/05/2010, 20:54
Avatar de dedydamy  
Fecha de Ingreso: marzo-2010
Ubicación: Aca :D
Mensajes: 78
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: [Aporte] Upload php

lo tomare en cuanta, sigan comentando :P

Etiquetas: upload, aportes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:30.