Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   Directorio e Imágenes (http://www.forosdelweb.com/f18/directorio-e-imagenes-266992/)

Reynier 01/02/2005 22:46

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 :pensando:

josemi 02/02/2005 01:38

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.

Reynier 02/02/2005 06:31

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

Reynier 02/02/2005 11:21

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 :pensando: :'(


La zona horaria es GMT -6. Ahora son las 16:20.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2014, Jelsoft Enterprises Ltd.

SEO by vBSEO 3.3.2