Foros del Web » Programando para Internet » PHP »

subir imagen con formulario

Estas en el tema de subir imagen con formulario en el foro de PHP en Foros del Web. Hola : Les quiero consultar una duda que tengo: En un formulario que tengo se adjunta con los datos una imagen para eso usaba en ...
  #1 (permalink)  
Antiguo 14/01/2010, 20:19
 
Fecha de Ingreso: julio-2009
Mensajes: 311
Antigüedad: 14 años, 8 meses
Puntos: 0
Pregunta subir imagen con formulario

Hola :
Les quiero consultar una duda que tengo:
En un formulario que tengo se adjunta con los datos una imagen para eso usaba en el formulario esto:

<form action="procesaAv2.php" method="POST" enctype="multipart/form-data" name="form1" id="form1" onsubmit="return valida(this)">

Puedo cambiar el metodo a metodo GET ?
Pues lo cambié pero ahora no me carga la imagen y no si es eso o si hay algun otro error

Desde ya gracias por adyudarme
  #2 (permalink)  
Antiguo 14/01/2010, 20:38
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: subir imagen con formulario

buenas. podrias especificar bien tu problema ?.

saludos.
  #3 (permalink)  
Antiguo 14/01/2010, 20:46
 
Fecha de Ingreso: julio-2009
Mensajes: 311
Antigüedad: 14 años, 8 meses
Puntos: 0
Pregunta Respuesta: subir imagen con formulario

Cita:
Iniciado por esaenz22 Ver Mensaje
buenas. podrias especificar bien tu problema ?.

saludos.
Todo funcionaba bien pero pude comprobar que cuando el usuario cometia algun error y yo tenia que volver nuevamente al formulario pra completar algun dato que no completo o que completo incorrectamente

Para eso uso sentencias tipo esto

<input type="text" name="telefono" value="<? if(!empty($_GET["telefono"])){ echo $_GET["telefono"];}?>" id="cantidad" onChange="validarSiNumero(this.value);"/>

y a mi entender entraba en conflicto el retorno de las variables mediante el metodo Get y pense en cambiar el metodo del formulario para usar un solo metodo pero no se si es valido



los valores llegan al formulario para completar los campos del formulario desde una ruta asi

$ruta="formAviso2.php?id=$idAviso && mtsterreno=$_REQUEST[mtsterreno] && mtsconstr=$_REQUEST[mtsconstr]&& dorm=$_REQUEST[dorm]
&& banos=$_REQUEST[banos]&& valorDol=$_REQUEST[valorDol]&& fpago=$_REQUEST[fpago]&& informacionAdic=$_REQUEST[informacionAdic]
&& telefono=$_REQUEST[telefono]&& telefono2=$_REQUEST[telefono2]&& estado=$_REQUEST[estado] && barrio=$_REQUEST[barrio]
&& cochera=$_REQUEST[cochera] && estufa=$_REQUEST[estufa]&& parrillero=$_REQUEST[parrillero]&& jardin=$_REQUEST[jardin]
&& fondo=$_REQUEST[fondo]&& patio=$_REQUEST[patio]&& galpon=$_REQUEST[sotano] && sotano=$_REQUEST[sotano]
&& alarma=$_REQUEST[alarma] && servicio=$_REQUEST[servicio]&& tamArch=$tamanoArchivo && error1=".$error1."&& error2=".$error2."&& error3=".$error3."&& error4=".$error4."&& error5=".$error5."&& error6=".$error6."&& error7=".$error7;

_Espero se entienda mi problema
  #4 (permalink)  
Antiguo 15/01/2010, 08:18
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: subir imagen con formulario

Cita:
Iniciado por marcos46g Ver Mensaje
Puedo cambiar el metodo a metodo GET ?
No, no puedes, puesto que el método GET tiene un máximo de envio de bytes, por lo que no subirá cualquier archivo, mientras que POST trabaja de otra manera.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 15/01/2010, 08:45
 
Fecha de Ingreso: enero-2010
Mensajes: 8
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: subir imagen con formulario

Hola te dejo este cogigo fuente, este codigo fuente esta un poco enrrevesado, pero te puede servir de referencia:

Código PHP:
<?PHP
    
//Código creado por:    Aitor Martin 
    //Código creado para:     http://www.aitormartin.com
    //Fecha:     jun-2009
    //Actualizado por:    
    //Actualizado:     
    //Descripción:
?>

<?php
require_once('admin/inc_menu_seguridad.php');                        //Script que restringe el acceso...
?>
<?php
function borrar_sesiones ()                                //funcion para borrar las var tipo $_SESSION...
    
{
    unset ( 
$_SESSION["fecha"] );
    unset ( 
$_SESSION["titulo"] );
    unset ( 
$_SESSION["comentario"] );

    unset ( 
$_SESSION["file_name"] );

    unset ( 
$_SESSION["procesar"] );
    }
?>

<?php
$trabajo 
"qrp/img/";                                //Ruta de las imagenes.

if(isset($_POST['enviar']))
    {
                                            
//pasamos las var $POST a var $_SESSION

    
$_SESSION["fecha"]     = $_POST['date'];                    //La fecha pasada
    
$_SESSION["titulo"]     = $_POST['titulo'];                    //titulo post
    
$_SESSION["comentario"] = nl2br(htmlentities($_POST['coment']));        //post

    
$file_name_p    $_FILES['file1']['name'];                    //el nombre del fichero
    
$file_ext_p     strrchr($_FILES['file1']['name'],'.');            //extension del fichero
    
$file_tipe_p    $_FILES['file1']['type'];                    //la extension del fichero
    
$file_size_p    $_FILES['file1']['size'];                    //el tamaño del fichero
    
$file_temp_p    $_FILES['file1']['tmp_name'];                    //el nombre temporal

    //Comprueba que hemos rellenado correctamente todos los campos.
    
if ( empty($_POST['date']) || empty($_POST['titulo']) || empty($_POST['coment']) )
        {
        
$_SESSION["error"] = "0001";                        //Si no esta correctamente rellenado pasamos el error
        
echo "<script>window.location.href='index.php?id=1022'</script>";    //recargamos la pagina para borrarlos
        
exit;                                    //datos pasados por $POST
        
}
        else
        {

    if (
$file_name_p != "")
        {
        
$renovar true;
        }

echo 
$_POST['img_eliminar']." - ".$_SESSION["file_name"];

    if ((
$_POST['img_eliminar'] == "eliminar") or (($renovar == true) and ($_SESSION["file_name"] != $file_name_p)))    //si vamos a eliminar una imagen...

            
{
            
$fichero_a_borrar $_SESSION["file_name"];
            if (
$fichero_a_borrar != "")                    //Si realmente tenemos que borrar un fichero...
                
{
                
$ruta_del_fichero_a_borrar $trabajo.$fichero_a_borrar;//Ubicacion del ficheroa a borrar.
                
if (file_exists("$ruta_del_fichero_a_borrar"))        //Miramos si el fichero a borrar esiste.
                    
{
                    
unlink("$ruta_del_fichero_a_borrar");        //Si esiste lo borra...
                    
}
                }
            }
                                            
//subimos la imagen al servidor...

        
if (($file_name_p != "") and ($file_size_p 0))            //Comprobamos si bamos a subir algo...
            
{                                //Si bamos a subir algo miramos que var del nombre del fichero
                                            //contenga texto y que ocupe mas de 0 kb...
            
if ((strpos($file_tipe_p"gif") || strpos($file_tipe_p"jpeg") || strpos($file_tipe_p"png")) && ($file_size_p 1500000))
                {
                                            
//Con este if miramos que el fichero a subir sea de un formato
                                            //valido y que ocupe menos de 1mb

                
if (is_uploaded_file($file_temp_p))            //Si hemos subido un fichero...
                    
{
                                            
//acontinuacion generamos un nombre aleatorio. 
                                            //Comprobamos que no exista un fichero con el mismo nombre
                                            //en la DB. Si exixte generamos
                                            //otro nombre aleatorios hasta encontrar
                                            //un nombre adecuado. 
                    
$link conectarse();
                    
$unico false;

                    do {
                    
$name_rand rand(0000000000,9999999999);
                    
$name_img $name_rand.$file_ext_p;
                
                    
$sql "select * from qrp_life WHERE img LIKE '$name_img'";
                    
$query mysql_query($sql) or die ("SQL Error SQL!!!");;
                    while (
$row mysql_fetch_object($query))
                        {
                        if (
$row->img != $name_img)
                            {
                            
$unico false;
                            }
                            else
                            {
                            
$unico true;
                            }
                        }
                    } while (
$unico == true);

                    
mysql_close($link);                 //Cerramos consulta
                
                    
copy($file_temp_p$trabajo.$name_img);        //Copia de el fichero de la carpeta temporal
                                            //a nuestra carpeta de trabajo.
                
                    
if (file_exists($trabajo.$name_img))        //Comprobamos si se ha copia corectamente el fichero
                        
{                    //Si se ha copiado correctamente continua el prog.
                        
}                    //Si no se ha copia muestra un error regresa
                        
else                    //al formulario...
                        
{
                        
$_SESSION["error"] = "0007";        //indica que ha surgido un error y pasamos el error
                        
$_SESSION["procesar"] = "no";        //Como ha ocurrido un error no procesamos los datos
                        
echo "<script>window.location.href='index.php?id=1022'</script>";//recargamos la pagina para borrarlo var post
                        
exit;
                        }
                    }
                    else
                    {
                    
$_SESSION["error"] = "0007";            //indica que ha surgido un error y pasamos el error
                    
$_SESSION["procesar"] = "no";            //Como ha ocurrido un error no procesamos los datos
                    
echo "<script>window.location.href='index.php?id=1022'</script>";//recargamos la pagina para borrarlo var post
                    
exit;
                    }
                }
                else
                {
                
$_SESSION["error"] = "0006";                //indica que ha surgido un error y pasamos el error
                
$_SESSION["procesar"] = "no";                //Como ha ocurrido un error no procesamos los datos
                
echo "<script>window.location.href='index.php?id=1022'</script>";//recargamos la pagina para borrarlo var post
                
exit;
                }

            }
            else
            {
            if ((
$file_name_p == "") and ($file_size_p 0))            //Si el fichero esta corrupto...
                
{
                
$_SESSION["error"] = "0005";                //indica que ha surgido un error y pasamos el error
                
$_SESSION["procesar"] = "no";                //Como ha ocurrido un error no procesamos los datos
                
echo "<script>window.location.href='index.php?id=1022'</script>";//recargamos la pagina para borrarlo var post
                
exit;    
                }
            }

        if (
$file_name_p == "")
            {
            
$name_img $_SESSION["file_name"];
            }

        if (
$_POST['img_eliminar'] == "eliminar")
            {
            
$name_img "";
            }

        
$_SESSION["file_name"] = $name_img;                    //Pasamos a una var el nombre de la imagen subida.
        
$_SESSION["procesar"] = "ok";                        //Al no dar errores procesamos los datos...
        
echo "<script>window.location.href='index.php?id=1022'</script>";    //recargamos la pagina para borrarlos
        
exit;                                    //datos pasados por $POST
        
}
    }
?>

<?php

    
if ( $_SESSION["procesar"] == "ok" )                        //Si procesar es ok pocesamos los datos, 
                                            //y los añadimos la DB
        
{
        
$link conectarse();
            
$sql "UPDATE qrp_life SET fecha = '".$_SESSION["fecha"]."', titulo = '".$_SESSION["titulo"]."', contenido = '".$_SESSION["comentario"]."', img = '".$_SESSION["file_name"]."' WHERE id LIKE '".$_SESSION["id_actualizar"]."' LIMIT 1";
        
mysql_query($sql);

        
borrar_sesiones();

        unset ( 
$_SESSION["id_actualizar"] );
    
        
$_SESSION["add_ok"] = "0000";                        //Pasamos la notificación que los datos se han modificado ok
        
echo "<script>window.location.href='index.php?id=1020'</script>";    //recargamos la pagina de actualizar.
        
exit;
        }

    if ( 
$_SESSION["procesar"] == "ok" )                        //Si no procesamos los datos borramos las session
        
{
        
borrar_sesiones();
        }

?>

<?php
//Control de errores...
if( $_SESSION["error"] == "0001" )
    {
    echo 
"<script>window.onload = function() { alert(\"".traducir('0001')."\");} </script>";
    unset (
$_SESSION["error"] );
    }
    elseif (
$_SESSION["error"] == "0005")
    {
    echo 
"<script>window.onload = function() { alert(\"".traducir('0005')."\");} </script>";
    unset (
$_SESSION["error"] );
    }
    elseif (
$_SESSION["error"] == "0006")
    {
    echo 
"<script>window.onload = function() { alert(\"".traducir('0006')."\");} </script>";
    unset (
$_SESSION["error"] );
    }
    elseif (
$_SESSION["error"] == "0007")
    {
    echo 
"<script>window.onload = function() { alert(\"".traducir('0007')."\");} </script>";
    unset (
$_SESSION["error"] );
    }
?>

<?php
                                            
//Lemos los datos del correspondientes al id a actualizar
    
$link conectarse();
        
$sql "select * from qrp_life WHERE id LIKE '".$_SESSION["id_actualizar"]."'";
        
$query mysql_query($sql);
    
mysql_close($link);

    while (
$row mysql_fetch_object($query))
        {
        
$fecha_p    $row->fecha;
        
$titulo_p    $row->titulo;
        
$comentario_p    html_entity_decode($row->contenido);
        
$img_p        =  $row->img;
        }

    
$_SESSION["file_name"] = $img_p;                        //Pasaomos los datos de la img auna session.

    
if($img_p != "")                                //Si no contiene img mostramos "nopic.png"
        
{
        
$img_actual $trabajo.$img_p;
        }
        else
        {
        
$img_actual $trabajo."nopic.png";
        }

    if (
file_exists($img_actual))                            //Si no existe la img mostramos "nopic.png"
        
{
        }
        else
        {
        
$img_actual $trabajo."nopic.png";
        }


?>

<div id= "qrp_add">

<h3>Actualizar Post 2</h3>

<form name="form" action="index.php?id=1022" method="POST" enctype="multipart/form-data">

    <input type="hidden" name="MAX_FILE_SIZE" value="1500000" />
    * Fecha:
    <br />
    <input name="date" type="text" id="date" value="<?php echo $fecha_p?>" size="16">
    <br />
    * Titulo:
    <br />
    <input type="text" name="titulo"  value="<?php echo $titulo_p?>"  size="87">
    <br />
    * Texto:
    <br />
    <textarea name="coment" cols="100" rows="15"><?php echo $comentario_p?></textarea>
    <br />
    <br />
    Imagen actual:
    <br />
    <br />
    <img src="<?php echo "$img_actual"?>">
    <br />
    <?php echo "$img_p"?>
    <br />
    <br />
    Sustituir imagen:
    <br />
    <br />
    <input type="file" name="file1">
    <br />
    <br />
    Eliminar la imagen:
    <input name="img_eliminar" type="checkbox" value="eliminar" />
    <br />
    <br />
    <input name="enviar" type="submit" id="enviar" value="Enviar">

</form>

</div>
  #6 (permalink)  
Antiguo 15/01/2010, 15:03
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: subir imagen con formulario

hay varias maneras y soluciones para subir un archivo o una imagen.

el codigo que ha colocado aitormartin es factible, pero solo copiando y pegando no aprenderas bien cual es su funcionalidad. de que sirve que alguien te da un codigo desarrollado con clases y al final no logras entender la logica y su funcionamiento.

como dijo antes Carxl.

No, no puedes, puesto que el método GET tiene un máximo de envio de bytes, por lo que no subirá cualquier archivo, mientras que POST trabaja de otra manera.

eso es cierto. si tu vas a subir o ingresar datos de mayor longitud, en este caso debes utlizar en tu formulario el metodo POST. ya que el metodo GET solo se encarga de enviar las variables a una url.

aqui te dejo una solucion simple y mas adelante tu la implementaras y le añadiras mejoras.

Código PHP:
Ver original
  1. //preguntamos si el archivo imagen esta vacio
  2.         if(is_uploaded_file($_FILES['imagen']['tmp_name'])) {  
  3.             /*prefijo de cadena*/
  4.             $str = "abcdefghijklmnopqrstuvwxyz1234567890";
  5.             $cad = "";
  6.             for($i=0;$i<12;$i++) {
  7.                 $cad .= substr($str,rand(0,36),1);
  8.             }      
  9.             #subiendo archivos al servidor
  10.             $filetype = $_FILES['imagen']['type'];
  11.             $imagen   = $_FILES['imagen']['name'];
  12.             $test     = explode(".",$imagen);
  13.        
  14.             //ruta para subir las imagenes.
  15.             $path  = "imagenes/";
  16.            
  17.                 if(strtoupper($test[1])=="JPG" || strtoupper($test[1])=="JPEG")
  18.                 {
  19.                     $tamano = $_FILES['imagen']['size']; // Leemos el tamaño del fichero
  20.                     $tamano_max="1048576"; // Tamaño maximo permitido (si lo deseas puedes modificar su valor).
  21.                     if($tamano <= $tamano_max){ // Comprovamos el tamaño                      
  22.                         $newfilename = $cad.'.'.$test[1];
  23.                         move_uploaded_file($_FILES['imagen']['tmp_name'],$path.$newfilename);
  24.                         //si estas trabajando con bd, colocas tu sql de insertar.
  25.                     }else{
  26.                         echo "<div align = 'center'>La imagen que intenta grabar, excede el peso requerido. El maximo de peso es 500KB.</div>";
  27.                         echo "<br /><br /><br />";
  28.                         echo "<a href='javascript:history.back()'>&lt;&lt; Clic aqui para regresar </a>";
  29.                     }                      
  30.                
  31.                 }else{
  32.                     echo "<div align = 'center'>La imagen que intenta grabar, debe ser de formato jpg.</div>";
  33.                     echo "<br />";
  34.                     echo "<a href='javascript:history.back()'>&lt;&lt; Clic aqui para regresar </a>";
  35.                 }
  36.                
  37.         //Si no hay imagenes para agregar, procederemos a agregar los datos sin imagen.
  38.         }else{
  39.             //si estas trabajando con bd, colocas tu sql de insertar.
  40.         }              
  41.            
  42.     }

como te dije antes, hay varias maneras de como subir imagenes. ahi te dejo una solucion simple.

saludos.

Última edición por esaenz22; 15/01/2010 a las 15:05 Razón: correccion.

Etiquetas: subir, formulario
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:11.