Ver Mensaje Individual
  #20 (permalink)  
Antiguo 14/05/2011, 21:59
Avatar de C2am
C2am
 
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 9 meses
Puntos: 306
Respuesta: Error al subir un archivo jpg al servidor

El que uso para subir imagenes y crear una miniimagen es esto:

Código PHP:
Ver original
  1. <?
  2. // ----- script para subir la imagen ---   
  3.     if($_POST){
  4. // Creamos la cadena aletoria -- la modifique para poder utilizar el nombre + aleatorio
  5. $nom=explode(".",$_FILES [ 'file' ][ 'name' ]); //para usar nombre de la imagen
  6.  
  7. $nom2 = $nom[count($nom)-2]; //obtengo solo el nombre sin extension
  8. //$str = "1234567890";
  9. $sub = $id_noticia;
  10. $cad = $nom2."_".$sub;
  11.  
  12. /*for($i=0;$i<3;$i++) {
  13. $cad .= substr($str,rand(0,9),1);
  14. } */
  15. // Fin de la creacion de la cadena aletoria
  16.  
  17. $tamano = $_FILES [ 'file' ][ 'size' ]; // Leemos el tamaño del fichero
  18. $tamaño_max="300000"; // Tamaño maximo permitido
  19. if( $tamano < $tamaño_max){ // Comprobamos el tamaño  
  20. //$destino = '../imagennov' ; // Carpeta donde se guardara
  21. $sep=explode('image/',$_FILES['file']['type']); // Separamos image/
  22. $tipo=$sep[1]; // Optenemos el tipo de imagen que es
  23.  
  24. if($tipo == "pjpeg"){$tipo = "jpeg";}
  25. if($tipo == "x-png"){$tipo = "png";}
  26. if($tipo == "gif" || $tipo == "jpeg"|| $tipo == "png"){ // Si el tipo de imagen a subir es el mismo de los permitidos, seguimos. Puedes agregar mas tipos de imagen
  27. move_uploaded_file ( $_FILES ['file']['tmp_name'],$destino . '/' .$cad.'.'.$tipo);  // Subimos el archivo
  28.  
  29. // creo la mini a tamaño de 175 ancho o menos si es más chica la img original
  30. include('imgchiqui.php');
  31. $imagenm= $destino . '/' .$cad.'.'.$tipo;
  32. // obtengo el ancho para definir si se achica o no
  33. $dim=getimagesize($imagenm);
  34. // $dim[0] ancho - $dim[1] altura
  35.  
  36. if ($dim[0] >= 175){thumb1($imagenm, 175, $tipo);}
  37. else{thumb1($imagenm, $dim[0], $tipo);}
  38.            
  39.  
  40.  
  41. }
  42. else echo "el tipo de archivo no es de los permitidos";// Si no es el tipo permitido lo decimos
  43. }
  44. else echo "El archivo supera el peso permitido.";// Si supera el tamaño de permitido lo decimos
  45. }
  46.  
  47.  
  48.  
  49. ?>


siendo imgchiqui.php:
Código PHP:
Ver original
  1. <?
  2. function thumb1($imagen,$ancho,$tipo) {
  3.      // Lugar donde se guardarán los thumbnails respecto a la carpeta donde está la imagen "grande".
  4.      $dir_thumb = "minis/";
  5.      // Prefijo que se añadirá al nombre del thumbnail. Ejemplo: si la imagen grande fuera "imagen1.jpg",
  6.      // el thumbnail se llamaría "tn_imagen1.jpg"
  7.      $prefijo_thumb = "m_";
  8.  
  9.      // Aquí tendremos el nombre de la imagen.
  10.      $nombre=basename($imagen);
  11.      // Aquí la ruta especificada para buscar la imagen.
  12.      $camino=dirname($imagen)."/";
  13.  
  14.      // Intentamos crear el directorio de thumbnails, si no existiera previamente.
  15.      if (!file_exists($camino.$dir_thumb))
  16.           @mkdir ($camino.$dir_thumb, 0777) or die("No se ha podido crear el directorio ".$camino.$dir_thumb);
  17.  
  18.      // Aquí comprobamos que la imagen que queremos crear no exista previamente
  19.      if (!file_exists($camino.$dir_thumb.$prefijo_thumb.$nombre)) {
  20.        
  21.         // echo $camino.$dir_thumb.$prefijo_thumb.$nombre." NO existía<br>\n";
  22.          
  23.          // si es jpeg o jpg
  24.           if($tipo == "jpg" || $tipo == "jpeg"){
  25.          
  26.           $img = @imagecreatefromjpeg($camino.$nombre) or die("No se encuentra la imagen $camino$nombre<br>\n");
  27.        
  28.           // miramos el tamaño de la imagen original...
  29.           $datos = getimagesize($camino.$nombre) or die("Problemas con $camino$nombre<br>\n");
  30.  
  31.           // intentamos escalar la imagen original a la medida que nos interesa
  32.           $ratio = ($datos[0] / $ancho);
  33.           $altura = round($datos[1] / $ratio);
  34.  
  35.           // esta será la nueva imagen reescalada
  36.           $thumb = imagecreatetruecolor($ancho,$altura);
  37.  
  38.           // con esta función la reescalamos
  39.           imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $ancho, $altura, $datos[0], $datos[1]);
  40.  
  41.           // voilà la salvamos con el nombre y en el lugar que nos interesa.
  42.           imagejpeg($thumb,$camino.$dir_thumb.$prefijo_thumb.$nombre);
  43.           }
  44.        
  45.        
  46.         // si del tipo png
  47.         if($tipo == "png"){
  48.           $img = @imagecreatefrompng($camino.$nombre) or die("No se encuentra la imagen $camino$nombre<br>\n");
  49.        
  50.           // miramos el tamaño de la imagen original...
  51.           $datos = getimagesize($camino.$nombre) or die("Problemas con $camino$nombre<br>\n");
  52.  
  53.           // intentamos escalar la imagen original a la medida que nos interesa
  54.           $ratio = ($datos[0] / $ancho);
  55.           $altura = round($datos[1] / $ratio);
  56.  
  57.           // esta será la nueva imagen reescalada
  58.           $thumb = imagecreatetruecolor($ancho,$altura);
  59.  
  60.           // con esta función la reescalamos
  61.           imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $ancho, $altura, $datos[0], $datos[1]);
  62.  
  63.           // voilà la salvamos con el nombre y en el lugar que nos interesa.
  64.           imagepng($thumb,$camino.$dir_thumb.$prefijo_thumb.$nombre);
  65.           }
  66.      
  67.         // si del tipo gif
  68.         if($tipo == "gif"){
  69.           $img = @imagecreatefromgif($camino.$nombre) or die("No se encuentra la imagen $camino$nombre<br>\n");
  70.        
  71.           // miramos el tamaño de la imagen original...
  72.           $datos = getimagesize($camino.$nombre) or die("Problemas con $camino$nombre<br>\n");
  73.  
  74.           // intentamos escalar la imagen original a la medida que nos interesa
  75.           $ratio = ($datos[0] / $ancho);
  76.           $altura = round($datos[1] / $ratio);
  77.  
  78.           // esta será la nueva imagen reescalada
  79.           $thumb = imagecreatetruecolor($ancho,$altura);
  80.  
  81.           // con esta función la reescalamos
  82.           imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $ancho, $altura, $datos[0], $datos[1]);
  83.  
  84.           // voilà la salvamos con el nombre y en el lugar que nos interesa.
  85.           imagegif($thumb,$camino.$dir_thumb.$prefijo_thumb.$nombre);
  86.           }
  87.          
  88.      
  89.      
  90.      }
  91. }  
  92.  
  93.  
  94.  
  95. ?>


Lo único que debo tener presente es el peso del archivo original, ya que si es muy grande tarda mucho, o directamente se bloquea. por eso siempre se deben subir con el tamaño final a mostrar.
saludos
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--