Foros del Web » Programando para Internet » PHP »

Trabajar con imagenes en PHP

Estas en el tema de Trabajar con imagenes en PHP en el foro de PHP en Foros del Web. Cómo puedo hacer esto en un input file en PHP Me sería muy útil al momento de validar campos. Ojala me puedan ayudar y nuevamente ...
  #1 (permalink)  
Antiguo 30/11/2008, 12:33
 
Fecha de Ingreso: octubre-2008
Ubicación: Temuco
Mensajes: 24
Antigüedad: 15 años, 7 meses
Puntos: 0
Sonrisa Trabajar con imagenes en PHP

Cómo puedo hacer esto en un input file en PHP



Me sería muy útil al momento de validar campos.

Ojala me puedan ayudar y nuevamente gracias a todo el Foro.
  #2 (permalink)  
Antiguo 30/11/2008, 15:13
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 2 meses
Puntos: 67
Respuesta: Trabajar con imagenes en PHP

Sorry, no se puede hacer, pero mediante javascript puedes validar que imagen se ha cargado. Se hace tomando el value del input y verificando su extensión. Si te interesa tendrías que mostrar tu función de validación para modifcarla de modo que también valida el archivo.
  #3 (permalink)  
Antiguo 30/11/2008, 15:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 1 mes
Puntos: 2534
Respuesta: Trabajar con imagenes en PHP

hola.... existen alternativas que te permiten esto...

todas trabajan con Flash y javascript

SWFUpload
FancyUpload

igual, y te sirven... suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 30/11/2008, 20:17
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 4 meses
Puntos: 7
Respuesta: Trabajar con imagenes en PHP

Se pueden validar tipos de archivos pero luego de enviados con un formulario, verificando la extensión. No creo que sea posible hacerlo en tiempo real cuando el usuario selecciona el archivo.
  #5 (permalink)  
Antiguo 30/11/2008, 21:15
 
Fecha de Ingreso: octubre-2008
Ubicación: Temuco
Mensajes: 24
Antigüedad: 15 años, 7 meses
Puntos: 0
Sonrisa Respuesta: Trabajar con imagenes en PHP

Mm, es que el problema que tengo es al momento de editar una imagen

Este es el código completo.

Código PHP:
<!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">
<link href="style.css" rel="stylesheet" type="text/css"/>
<title>Modificar imagen de artículos</title>
</head>
<body>
<?
// Conexión la bd
include 'Conexion.PHP';
$link=conexion();

// Ruta donde van a quedar las imágenes dentro del cPanel
if($_POST['Editar'])
{
// Obtenemos los datos después del POST
$Ruta "http://www.forosdelweb.com/images/articulos";
$Id $_POST['Id'];

// Creamos una cadena aletoria
$Str "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
$Cadena "";
for(
$i=0;$i<12;$i++) {
$Cadena substr($Str,rand(0,62),1);
}

// Leemos el tamaño del archivo
$Tamano $_FILES['file']['size'];

// Asignamos un tamaño máximo
$Tamanomaximo="1000000"//1megabytes

// Comprobamos el tamaño permitido
if( $Tamano $Tamanomaximo
// if tamaño maximo
// Carpeta donde quedarán las fotografías
$Destino $Ruta;

// Separamos la imágen
$Seperar=explode('image/',$_FILES["file"]["type"]);

// Obtenemos de que tipo es.
$Extension=$Separar[1];

// Si el tipo de imágen es uno de los permitidos, vamos! si no pa fuera!.
// Aquí definimos los tipos de imágenes
if ($Extension == "GIF" || 
    
$Extension == "JPG" || 
    
$Extension == "PNG" ||  
    
$Extension == "gif" || 
    
$Extension == "jpg" || 
    
$Extension == "png" || 
    
$Extension == "JPEG" ||
    
$Extension == "jpeg")
// if extensión
// Subimos el archivo 
move_uploaded_file($_FILES['file']['tmp_name'], $Destino.'/'.$Cadena.'.'.$Extension);

// Obtenemos la ruta de la fotografía para agregarla a la base de datos
$Nombreimg $Cadena.'.'.$Extension;
$Rutaimg $Destino.'/'.$Cadena.'.'.$Extension;

// Guardar imágen en la base de datos
$Instr="UPDATE articulos Nombre_Imagen='$Nombreimg', Ruta_Imagen='$Rutaimg' WHERE Id='$Id'";

// Ejecutar la consulta
$Query=mysql_query($Instr$link) or die(mysql_error());

// Cerrar la conexión con la base de datos
mysql_close($link);

// Más bla bla bla y éxito
print ("<div align=\"center\">Imagen editada, volver al formulario <a href='Editarart.PHP?id=".$Id."'>aquí</a>.</div>");
// Fin if extensión
else
// Si no es el tipo permitido mostramos un mensaje
print ("<div align=\"center\">La extensión del archivo no es de los permitidos, sólo puede subir imágenes 'JPEG, JPG, GIF y PNG', para intentarlo otra vez haga clic <a href='Editarimagen.PHP?id=".$Id."'>aquí</a>.</div>");
// Fin if tamaño
else 
// Si supera el tamaño de permitido, mostramos un mensaje
print ("<div align=\"center\">El peso de la fotografía supera el tamaño máximo permitido, el tamaño máximo es de <b>1MB</b>, para intentarlo otra vez haga clic <a href='Editarimagen.PHP?id=".$Id."'>aquí</a>.</div>");
// Fin $_GET
else
{
// Si el formulario no es enviado entonces
if ($_GET['id'])
{
$Id $_GET['id'];
// Instrucción
$Sql "SELECT * FROM articulos WHERE Id = '$Id'";
$Query mysql_query ($Sql$link) or die ("Fallo en la consulta, razón: "."<strong>"mysql_error() ."</strong>");

// Recorriendo la tabla artculos
$nfilas mysql_num_rows ($Query);
if (
$nfilas 0)
// if
for ($i=0$i<$nfilas$i++)
// for
$fila mysql_fetch_array($Query);

print(
"<form action=\"Editarimagen.PHP\" method=\"POST\" enctype=\"multipart/form-data\" name=\"form1\">");
print(
"<p><div align=\"center\">Modificar imagen de art&iacute;culos</div></p>");
print(
"<p><div align=\"center\">
       <input type=\"hidden\" name=\"Id\" value=\""
.$fila['Id']."\"><em>hidden</em>
       <input type=\"file\" name=\"file\" class=\"button\">
       <input type=\"submit\" name=\"Editar\" class=\"button\" value=\"Editar imagen\">
       </div></p>"
);
print(
"<p><div align=\"center\">Formulario: <a href='Editarart.PHP?id=".$fila['Id']."'>".$fila['Nombre']."</a></div></p>");
print(
"</form>");
// Fin for
// Fin if
// Fin if $_GET
// Fin else
?>
</body>
</html>
Lo más fome que aunque suba un archivo JPG, PNG, GIF, igual me dice que la extensión del archivo es de las bloqueadas, por eso quise buscar otra alternativa.

Gracias de nuevo.
  #6 (permalink)  
Antiguo 01/12/2008, 12:13
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 4 meses
Puntos: 7
Respuesta: Trabajar con imagenes en PHP

Tengo un fragmento de código de hace tiempo, cuando hice una especie de rejunte para un inventito.

Código PHP:
/*Los parámetros que esta función recibe son:
nombre_archivo --> $HTTP_POST_FILES['archivo']['name']
tamanio_archivo --> $HTTP_POST_FILES['archivo']['size']
destino --> Ruta destino. EJ: "imagenes/"
nuevonombre --> Nuevo nombre que adoptará. La función se encarga de mantener la extensión
temp --> $HTTP_POST_FILES['archivo']['tmp_name']      */
function upload($nombre_archivo$tamanio_archivo$destino$nuevonombre$temp)
{
    
//$extension = strrchr($nombre_archivo,'.');
    
$extension substr($nombre_archivostrpos($nombre_archivo,'.'), strlen($nombre_archivo));

    
//Se busca la posición del punto para saber hasta dónde va el viejo nombre
    
$posicionpunto strpos($nombre_archivo".");
    
//Obtengo nombre viejo para poder buscarlo en el nombre original
    
$nombreviejo substr($nombre_archivo0$posicionpunto);
    
//Sustituyo nombre viejo por nombre nuevo
    
$nombrefinal substr_replace($nombre_archivo$nuevonombre0strlen($nombreviejo));
    
//Coloco el nombre final luego del directorio de destino
    
$destino $destino.$nombrefinal;


    
    
//Busca si la extensión está dentro de las aceptadas
    
if (!((stripos($extension"jpg") || stripos($extension"jpeg") || stripos($extension"gif") || stripos($extension"png") || stripos($extension"txt") || stripos($extension"doc") || stripos($extension"xls") || stripos($extension"ppt") || stripos($extension"pps")) && ($tamano_archivo 1000000))) {
        return 
false;
    }else
    {
        if (
move_uploaded_file($temp$destino)){
            return 
true;
        }else
        {
            return 
false;
        }
    }

Espero que sirva de algo.

Otra cosita, fijate que las extensiones sean las indicadas, por las dudas intentá verle las extensiones a los archivos entrando a las opciones de carpeta si usás windows, es más que nada para descartar esa posibilidad.
  #7 (permalink)  
Antiguo 01/12/2008, 12:19
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 4 meses
Puntos: 7
Respuesta: Trabajar con imagenes en PHP

Ahora que miro tu código de nuevo tengo para preguntar si hiciste alguna impresión de la variable $Extension... yo probaría imprimirla por pantalla y ver si estás cortando bien los caracteres para obtenerla.

Es probable que te quede algo que haga que no cumpla la condición del if.

Saludos.
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 23:01.