Comunidad de diseño web y desarrollo en internet online

input type="file" con PHP

Citar            
MensajeEscrito el 31 Ago 2008 11:24 pm
Hola Amigos !
Necesito de su ayuda...
estoy haciendo una web en la que tengo un input type="file" para que el dueño de la pagina pueda subir una imagen al servidor, y al hacerlo, se guarde la ruta de la imagen en una base de datos... hasta ahi voy bien... pero que pasa ???? necesito que el dueño pueda cambiar esa imagen y otra cantidad de datos mas... my solucion fue colocar (ademas de los cuadros de texto para cambiar las demas informaciones) la imagen ya guardada en la base de datos y abajo un input type="file" para que si al cliente le da la gana de cambiar la imagen, la cambie.... pero el problema es que no se que código poner en PHP para saber si el cliente selecciono una imagen en el input type="file" o si no lo hizo... ya que si selecciono una imagen, tengo que cambiar el nombre de la imagen en la base de datos, borrar la imagen antigua, y subir la nueva en el servidor... (lo que no se es el codigo para saber si se selecciono una foto o nó... esto ultimo si se como... :lol: )

yo puse este codigo... pero no me funcionó...

Código :

if(isset($_FILES['file']['name'])){
   $ima = $_FILES['file']['name'];
   move_uploaded_file($_FILES['file']['tmp_name'], $destino.'/'.$_FILES['file']['name']);
}


el input type="file" tiene como nombre 'file', e $ima es una variable donde coloco el nombre de la imagen para guardarlo en la base de datos...

gracias por leer esto...!!! espero sus respuestas !!

Por Alejandro Flores

51 de clabLevel



 

Venezuela

safari
Citar            
MensajeEscrito el 01 Sep 2008 04:48 am
bueno pues es facil, declaras que el archivo tenga extension JPG, GIF O PNG segun lo que manejes y listo asi lo checa.
puede ser en JavaScript o en Php. solo extraes la cadena de la extension y checas que tenga la extension .el formato que quieras y listo.

Por Mac_30893

28 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 01 Sep 2008 01:59 pm
Para tu caso es más recomendable hacer el chequeo con Php que con javascript.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 01 Sep 2008 02:14 pm
Hola !
gracias por sus respuestas ... "Odin" ... como hago ese chequeo ? que código utilizo para saber si ha seleccionado algo o no ? que propiedad tiene el input type="file" que me indique si ha seleccionado algo o no ??
espero sus respuestas !

Por Alejandro Flores

51 de clabLevel



 

Venezuela

safari
Citar            
MensajeEscrito el 01 Sep 2008 02:21 pm
Hola "Mac_30893" !
gracias por tu respuesta, pero no es eso lo que pregunto ... :) ... lo que quiero saber es, si el input type="file" tiene un archivo seleccionado o no... no la extensión del archivo... igualmente gracias por tu respuesta... si tienes sabes hacer el codigo php para esto, por favor dimelo... (no se nada de javascript)...

Por Alejandro Flores

51 de clabLevel



 

Venezuela

safari
Citar            
MensajeEscrito el 01 Sep 2008 03:41 pm

Código :

if( $_FILES['file']['name'] != null && $_FILES['file']['size'] > 0 )
{
   echo "nice nos llegó un bonito archivo";
}
else
{
   echo "shit, no llegó nada";
}

Yo así le hago y me funciona.

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 01 Sep 2008 04:58 pm
hola "Dano" ! no me funciona !
coloque o no un archivo, al darle al boton "submit" me dice "shit, no llegó nada"... inclusive lo probé en mi dominio y no sirve... lo he estado probando con un progrma que se llama xampp... que me crea un servidor...
este es el codigo completo de la pagina:

[code]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Editar</title>
</head>
<body>
<?php
if(isset($_POST['Submit'])){
if(isset($_POST['file'])){
echo "si !!!
";
}else{
echo "no !!!";
}
}else{
?>
<form id="form1" enctype="multipart/form-data" name="form1" method="post" action="?">
<input type="file" name="file"/>
<input type="submit" name="Submit" id="submit" value="Submit" />
</form>
<?php } ?>
</body>
</html>
[code/]

no se si estara malo lo que hice o el codigo tuyo... supongo que lo mio, ya que tu dices q t funciona... revisa este codigo y dime si esta malo por favor...
Gracias !

Por Alejandro Flores

51 de clabLevel



 

Venezuela

safari
Citar            
MensajeEscrito el 01 Sep 2008 04:59 pm
perdon.... el codigo es este... :)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Editar</title>
</head>
<body>
<?php
if(isset($_POST['Submit'])){
if($_FILES['file']['name'] != null && $_FILES['file']['size'] > 0){
echo "si !!!
";
}else{
echo "no !!!";
}
}else{
?>
<form id="form1" enctype="multipart/form-data" name="form1" method="post" action="?">
<input type="file" name="file"/>
<input type="submit" name="Submit" id="submit" value="Submit" />
</form>
<?php } ?>
</body>
</html>

Por Alejandro Flores

51 de clabLevel



 

Venezuela

safari
Citar            
MensajeEscrito el 01 Sep 2008 05:03 pm
hey !!!!! lo logre !
no se porque, pero le quite en el codigo una parte:

&& $_FILES['file']['size'] > 0

quedando asi:

$_FILES['file']['name'] != null

y si me funciona !
gracias a todos por responder.... y espero que este post le sirva a muchos que tienen este problema... :)

Por Alejandro Flores

51 de clabLevel



 

Venezuela

safari
Citar            
MensajeEscrito el 01 Sep 2008 09:56 pm
si despues de haber recibido correctamente el archivo y la ruta solo te queda borrar con unlink el archivo q tenias en la carpeta eso se llama copiado total para eso borrar y metes el archivo nuevo averigua sobre unlink y copy bueno yo uso copy no si los demas lo usaran pero bueno eso es a escogencia de cada uno espero q te sirva

Por talcual

686 de clabLevel



 

Colombia

msie7
Citar            
MensajeEscrito el 05 Dic 2008 08:17 pm
si se me carga la imagen pero no logro cambiarle el nombre es necesario que quede renombrado con la variable que traigo del formulario anterior........................ por fa ustedes que tienen mas experiencia ayudenme,,,,,,,,,,, Guiño ...... Que metodo seria mas factible utilizar en vez del Request?????? .... de antemano muuuuuuuuuuuuuuuuuuuuuuuuuchas gracias..............

Código :

<form id="form1" name="form1" method="post" action="subiendo.php"  enctype="multipart/form-data" onsubmit="return validar(this)">
     Por favor elija la foto que desea cargar:
    <input type="file" name = "archivo" id="archivo" /> <input type="hidden" name="enviado" value="1" />
 
   <input name="submit" type="submit" value="SUBIR" />
   <?php
   
   $nombre= $_GET['id_cedula'];
   echo $nombre;
     
    if ($_REQUEST['enviado'] == 1){
     $ruta = "./imagenes/";
   $filename = nombre;
    $filename=$nombre.".jpg";
   copy($_FILES['archivo']['tmp_name'] , $ruta.$filename );
   chmod($ruta ,  0644); ?>
   <table width="200" border="1">
  <tr>
    <td><?php    echo $filename; ?></td>
    <td><?php  echo "<img src=\"" . $ruta . "/" . $filename . "\" />"; ?></td>
  </tr>
</table>
   <?php
   echo "<script>alert('Ha escogido una imagen');</script>";
   } 

Por lexxa_ga

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Dic 2008 02:48 am

lexxa_ga escribió:

si se me carga la imagen pero no logro cambiarle el nombre es necesario que quede renombrado con la variable que traigo del formulario anterior........................ por fa ustedes que tienen mas experiencia ayudenme,,,,,,,,,,, Guiño ...... Que metodo seria mas factible utilizar en vez del Request?????? .... de antemano muuuuuuuuuuuuuuuuuuuuuuuuuchas gracias..............

Código :

<form id="form1" name="form1" method="post" action="subiendo.php"  enctype="multipart/form-data" onsubmit="return validar(this)">
     Por favor elija la foto que desea cargar:
    <input type="file" name = "archivo" id="archivo" /> <input type="hidden" name="enviado" value="1" />
 
   <input name="submit" type="submit" value="SUBIR" />
   <?php
   
   $nombre= $_GET['id_cedula'];
   echo $nombre;
     
    if ($_REQUEST['enviado'] == 1){
     $ruta = "./imagenes/";
   $filename = nombre;
    $filename=$nombre.".jpg";
   copy($_FILES['archivo']['tmp_name'] , $ruta.$filename );
   chmod($ruta ,  0644); ?>
   <table width="200" border="1">
  <tr>
    <td><?php    echo $filename; ?></td>
    <td><?php  echo "<img src=\"" . $ruta . "/" . $filename . "\" />"; ?></td>
  </tr>
</table>
   <?php
   echo "<script>alert('Ha escogido una imagen');</script>";
   } 


Wao, estás en todos lados :P:P:P:P

Por KB-27

Claber

301 de clabLevel



 

My very secret HQ

msie7
Citar            
MensajeEscrito el 06 Dic 2008 02:53 am
ya le dije q lo hiban a penalizar jajajaja pero dijo q no lo volvia a hacer jajajaj

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 02 Ene 2009 09:52 pm
leete programacion por objetos en la misma bucle que uses para subir tu archivo o mandar error ahi cuando se suba correcto le mandas una funcion de que conecte a la base y meta la info

Por hellomynameistoy

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Dic 2010 05:46 pm
Se que ya esta resuelto pero esta creo que es la mejor forma a y gracias este post me sirvio mucho yo tenia la misma duda

if(is_uploaded_file($_FILES['archivo']['tmp_name'])) {
//El archivo ha sido recibido
} else {
//Ha ocurrido un error o no se ha subido ningun archivo
//Comprobar $_FILES['archivo']['error']
}
:? ^^ ^^ ^^

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 01 Dic 2010 05:49 pm
Un post muy util para los que comenzamos a trabajar con archivos...

http://www.4coders.com/index.php?modulo=contenido&op=detalle&tipo=c&id=63

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 27 Ene 2012 01:03 am
Pues yo tengo un problemilla en un panel de carga de fotos en cascada que sigue el esquema desarrollado en este hilo .... bueno ... muy parecido.

Desde el panel podemos añadir/modificar/borrar .... funciona al 100% en firefox.
Pero cuando me voy a chrome, ie9 o a safari ..... los input file (html) no responden .... parecen no enviar nada (en realidad si) .... pero la función que se encarga de preparar y subir el archivo no responde.

ESTRUCTURA DEL SCRIPT:::::

Código PHP :

include ('header.php');
//formulario();
//url();
carga_fotos();

if ($_GET['url'] && !$_POST['la_url']){borrar_foto();}
if ($_POST['submit']="CambiarFoto" && $_POST['la_url']){update_foto();}

if ($_POST['Submit']=="Fotonueva"){

$tamano = $_FILES [ 'foto' ][ 'size' ];
$tipo = $_FILES['foto']['type'];
if ($tipo=='image/jpeg' or $tipo=='image/pjpeg'){$tipo="JPG";}
echo "<div><br />";
     if ($tamano > 75000 || $tamano !=0){ //criterio inicial: a partir de un tamaño minimo
         if( $tamano < 200001 ){
             if ($tipo!=="JPG"){echo "<img src='".$SERVER."/images/error.jpg' style='float:left' alt='ok'/>
             <p style='color:red'>El ARCHIVO NO es JPG >> CAMBIE EL FORMATO</p></div><br /><br /><br />"; }
             else{ print ""; insertfoto();}
         }else{echo"<img src='".$SERVER."/images/error.jpg' style='float:left' alt='nook'/><br /><br /><p>ERROR: FOTO mayor de 200KB >> Reduzca la imagen. Pase su foto a 640x480</p></div>"; }
    }else{echo"<img src='".$SERVER."/images/error.jpg' style='float:left' alt='ok'/><p>NO HA ENVIADO NINGUNA FOTO.</p></div><br /><br /><br />"; }

}
include ('footer.php');


Como se ve: según el POST que envío, se hace una cosa u otra . .. nos interesa:
if ($_POST['Submit']=="Fotonueva") >>>>>>> insertfoto();

Y LA FUNCIÓN INSERFOTO() resumida

Código PHP :

function insertfoto(){

$SERVER = "http://".$_SERVER['SERVER_NAME']."/privado";
include ("db.php");
//TRAtamiento de la imagen
//$unique = $_GET['id']."-".time()."-"; //la foto se precede del refweb del anuncio
//$nombre_foto =  str_replace ("[^ A-Za-z0-9_-]", "", $_FILES['foto']['name']);
$unique = $_GET['id']."-".time()."-"; //la foto se precede del refweb del anuncio
$nombre_foto =  ereg_replace ("[^A-Za-z0-9.]", "", $_FILES['foto']['name']);
$nombre_foto =  ereg_replace (" ", "", $nombre_foto);
$uploaddir = $_SERVER['DOCUMENT_ROOT'].'/fotos/'.$unique.$nombre_foto;

IF( $_FILES['foto']['name'] != null && $_FILES['foto']['size'] > 0){
/// A PARTIR DE AQUÍ SE TRATA LA IMAGEN A SUBIR ***************************************
@$img = imagecreatefromjpeg($_FILES['foto']['tmp_name']);
// miramos el tamaño de la imagen original...
$datos = getimagesize($_FILES['foto']['tmp_name']) or die("Problemas con datos de foto ");
// intentamos escalar la imagen original a la medida que nos interesa
$altura = 360; // la altura será de 360px
$ratio = ($datos[1] / $altura);
$anchura = round($datos[0] / $ratio);
// esta será la nueva imagen reescalada
$thumb = imagecreatetruecolor($anchura,$altura);
// con esta función la reescalamos
imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
// voilà la salvamos con el nombre y en el lugar que nos interesa.
//imagejpeg($thumb,$uploaddir);


IF(imagejpeg($thumb,$uploaddir)){ // esta es la instruccion de subida

 echo "<div style='float:right;margin-right:100px'>
 <img src='/fotos/".$unique.$nombre_foto."' alt='foto".$unique."' style='height:180px'/>
 </div>";


$fotoparticular = '/fotos/'.$unique.$nombre_foto;
$id_anuncio = $_GET['id'];
$titulo = "Foto ".$id_anuncio;
//echo $fotoparticular." -- ".$titulo." -- ".$id_anuncio;
$result=mysql_query("INSERT INTO fotos (refweb,url)
      VALUES ('$id_anuncio','$fotoparticular')",$connection) or die(mysql_error());
$num_res = mysql_affected_rows();

if ($num_res > 0){
?>
<script language="JavaScript" type="text/javascript">
/*<![CDATA[*/
alert("LA FOTO HA SIDO CARGADA");
window.location.href='<?php echo $SERVER."/carga_fotos.php?id=".$_GET['id']; ?>';
/*]]>*/
</script>
<?php
}

  }

} // IF(!empty($_FILES['foto']['name'])
}//FIN FUNCION



¿ALGUIEN SABRÍA DECIRME DÓNDE METO LA PATA?

Os puedo dejar hacer pruebas desde el server de ensayos:
http://autocaex.no-ip.info

Por pepeitor

25 de clabLevel



 

buscarme la vida

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.