Ver Mensaje Individual
  #21 (permalink)  
Antiguo 14/05/2011, 23:31
Fsg
 
Fecha de Ingreso: junio-2009
Mensajes: 155
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: Error al subir un archivo jpg al servidor

Cita:
Iniciado por C2am Ver Mensaje
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&#241;o_max="300000"; // Tamaño maximo permitido
  19. if( $tamano < $tama&#241;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
Gracias y pues mi error era de que no se el por que , no pasaba de esta condicion:

Cita:
if (is_uploaded_file($_FILES['foto']['name']))
Ya arregle la ruta y el error es otro.



Cita:
Iniciado por Nemutagk Ver Mensaje
Dices que el error es al subirlo, pero realmente no dices cual es el error exactamente, muestra el error que marca php
Me sale este error ahora:
Cita:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.