Foros del Web » Programando para Internet » PHP »

Directorio e Imágenes

Estas en el tema de Directorio e Imágenes en el foro de PHP en Foros del Web. Pues bien un amigo mío me ha pedido que le desarrolle un script que le permita subir imagenes a un directorio y cuando estas sean ...
  #1 (permalink)  
Antiguo 01/02/2005, 23:46
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Directorio e Imágenes

Pues bien un amigo mío me ha pedido que le desarrolle un script que le permita subir imagenes a un directorio y cuando estas sean subidas entonces crear un thumbnail de la misma imagen que se subio, ponerlo en la carpeta thumb y luego mostrar el thumbnail. He programado algo como esto:
Código PHP:
<?php
 $dir           
"fotos/";
 
$thum          "thubmnails/";
 
$allowext = array("image/jpeg","image/pjpeg");
 
$accion        = isset($_GET['ac'])?$_GET['ac']:null;
 
$filename      = isset($_FILES['foto']['name'])?$_FILES['foto']['name']:null;
 
$tmp_name      = isset($_FILES['foto']['tmp_name'])?$_FILES['foto']['tmp_name']:null;
 
$filetype      = isset($_FILES['foto']['type'])?$_FILES['foto']['type']:null;
 if(
$accion && $accion == "upload"){
  if(
file_exists($dir.$filename)){
   
$error "Archivo existente";
  }else{
   if(
in_array($filetype,$allowext)){
    
chmod($dir,0777); // Esto es para Windows que es con lo que yo trabajo
    
$file move_uploaded_file($tmp_name,$dir.$filename);
    if(
$file){
     
$error "Foto subida correctamente";
     
$foto $dir.$filename;
     
$tamanio getimagesize($foto);
     
$ancho $tamanio[0];
     
$alto $tamanio[1];
     
$src imagecreatefromjpeg($foto);
     
$thumb imagecreatetruecolor(221,167);
     
imagecopyresized($thumb,$src,0,0,0,0,221,167,$ancho,$alto);
     if(!
is_dir($dir.$thum)){
      
$newdir "fotos/thumbnails/";
      
$mk mkdir($newdir,0777);
      if(!
$mk)
       
$error "No se pudo crear el directorio ".$dir.$thumb."";
     }
     
imagejpeg($thumb,$newdir.$filename,60);
     
header('Content/type: image/pjpeg');
    }else{
     
$error "Ocurrieron errores mientras se intentaba subir el fichero";
    }
   }else{
    
$error "Extension no permitida";
   }
  }
 }
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Administrador - Galeria de Fotos on-line - Morgan DesignStudio</title>
<style type="text/css">
a {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    font-weight: normal;
    color: #666666;
    text-decoration: none;
}
a:hover {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    font-weight: normal;
    color: #000000;
    text-decoration: none;
}
input {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 9px;
    color: #999999;
}
</style>
<script language="JavaScript">
 function CheckForm(){
  var file = document.form1.foto.value;
  if(file){
   form1.submit();
  }else{
   alert("Debes especificar un fichero a subir");
   document.form1.foto.focus();
  }
 }
</script>
</head>
<body>
<form action="upload.php?ac=upload" method="post" enctype="multipart/form-data" name="form1">
<strong><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif">Estado:</font></strong>
<?
 $error 
= isset($error)?$error:"";
echo 
"<strong><font color=\"#000000\" size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\">$error</font></strong>";
?>
<br>
<div align="left">
  <p><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Elija el archivo:*<br>
    </font>
      <input name="foto" type="file" size="40">
      <br>
      <br>
      <img src="upload.gif" alt="Subir archivo" onClick="javascript:CheckForm();">
</p>
  <p><strong><font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif">*</font></strong><font color="#FF0000" size="1" face="Verdana, Arial, Helvetica, sans-serif"><strong>Advertencia</strong></font><font size="1" face="Verdana, Arial, Helvetica, sans-serif">: El sistema se basa en una galer&iacute;a de fotos por lo que se recomienda subir archivos con extensi&oacute;n &quot;<strong><font color="#FF0000">.jpg</font></strong>&quot; para su optima visualizaci&oacute;n </font><font size="1">.</font></p>
</div>
</form>
<a href="main.htm" target="iframe"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Volver al Panel de Control</font></a>
</body>
</html>
Cuando hago el primer upload me pone este mensaje:
Cita:
Estado: Foto subida correctamente
ahora cuando hago el 2do upload me pone este mensaje:
Cita:
Warning: mkdir() [function.mkdir]: File exists in d:\Inetpub\wwwroot\morgan\upload.php on line 27

Warning: Cannot modify header information - headers already sent by (output started at d:\Inetpub\wwwroot\morgan\upload.php:27) in d:\Inetpub\wwwroot\morgan\upload.php on line 32

Estado: No se pudo crear el directorio fotos/Resource id #6

PHP Warning: mkdir() [function.mkdir]: File exists in d:\Inetpub\wwwroot\morgan\upload.php on line 27 PHP Warning: Cannot modify header information - headers already sent by (output started at d:\Inetpub\wwwroot\morgan\upload.php:27) in d:\Inetpub\wwwroot\morgan\upload.php on line 32
la cosa es que no se que pasa porque en teoría me debía funcionar correctamente. Que hago mal ??

Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 02/02/2005, 02:38
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,
Código PHP:
if(!is_dir($dir.$thum)){ 
Parece que falla eso, te intenta crear otra vez el directorio. Quizas es que este "perdido" por las rutas. Prueba con
Código PHP:
if(!is_dir('./'.$dir.$thum)){ 
para decirle que empiece a buscar en el directorio del script.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 02/02/2005, 07:31
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Pues nada de nada

Nada Josemi, he realizado los cambios que me dices y sigue dandome el mismo problema con los directorios. Lo otro es que el script no se me ejecuta en Firefox, solo en IE. Tiene que ver esto algo con JavaScript ?? Como lo soluciono ??

Salu2
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 02/02/2005, 12:21
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Pues nada de nada

He vuelto a revisar el código y he corregido algunas cosas pero nada de nada. Miren este es el código nuevo:
Código PHP:
<?php
 
/* Directorio de Fotos Originales */
 
$directorio_main       "fotos/";
 
/* Directorio donde se crearán los thumbnails */
 
$directorio_thumbs     $directorio_main."/thumbs/";
 
$thumbs                "thumbs/";
 
/* Etensiones que permitirás subir OJO: Deben ser tipo MIME no .jpg o .jpeg o .gif */
 
$extensiones_perm      = array("image/jpeg","image/pjpeg");

 
$accion                = isset($_GET['a'])?$_GET['a']:null;
 
$nombre_fichero        = isset($_FILES['foto']['name'])?$_FILES['foto']['name']:null;
 
$nombre_temporal       = isset($_FILES['foto']['tmp_name'])?$_FILES['foto']['tmp_name']:null;
 
$tipo_extension        = isset($_FILES['foto']['type'])?$_FILES['foto']['type']:null;

 function 
UploadFile($nombre_fichero$nombre_temporal$tipo_extension){
  global 
$directorio_main$directorio_thumbs$extensiones_perm;
  
/* Comprobamos que los ficheros no existan */
  
if((!file_exists($directorio_main.$nombre_fichero)) or (!file_exists($directorio_thumbs.$nombre_fichero))){
   
/* Comprobamos que la extensión sea la correcta */
   
if(in_array($tipo_extension,$extensiones_perm)){
    
/* Cambiamos los permisos a los directorios para que PHP pueda escribir en ellos */
    
if(!is_dir($directorio_main)){ mkdir($directorio_main,0777); }
    if(!
is_dir($directorio_thumbs)) { mkdir($directorio_thumbs,0777); }
    
chmod($directorio_main,0777);
    
chmod($directorio_thumbs,0777);
    
/* Movemos el fichero a la carpeta especificada */
    
$uploaded_file move_uploaded_file($nombre_temporal,$directorio_main);
    if(
$uploaded_file){
     
$pic_size  123;
     
$tamano    getimagesize($nombre_fichero);
     
$ancho     $tamano[0];
     
$alto      $tamano[1];
     
$aspect_rat$ancho $alto;
     
$nue_alto  $pic_size;
     
$nue_ancho abs($nue_alto $aspect_rat);
     
$source    imagecreatefromjpeg($nombre_fichero);
     
$thumbnailsimagecreatetruecolor($nue_alto,$nue_ancho);
     if(
is_dir($thumbnails)){
      
imagecopyresized($thumbnails,$nombre_fichero,0,0,0,0,$nue_ancho,$nue_alto,$ancho,$alto);
     }else{
      
mkdir($thumbnails,0777);
      
imagecopyresized($thumbnails,$nombre_fichero,0,0,0,0,$nue_ancho,$nue_alto,$ancho,$alto);
     }
     
imagejpeg($thumbnails,$thumbnails,60);
     
header('Content/type: image/pjpeg');

    }else{
     
$error "No se ha podido subir el archivo";
    }
   }else{
    
$error "Extensión no permitida";
   }
  }else{
   
$error "Fichero existente";
  }
 }

 switch(
$accion){
  case 
"upload":
   
UploadFile($nombre_fichero$nombre_temporal$tipo_extension);
  break;
  default:
  break;
 }
?>
me sigue dando el mismo error.

Salu2
__________________
Ing. Reynier Pérez Mira
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 10:17.