Campo Archivo de Formulario, No Funciona!

kol2
25 de Febrero del 2005
Muy wenas a [email protected], e dejado varios mensajes en el foro preguntando lo mismo y es algo ke kreo ke para vosotros es muy simple pero yo ya no se lo ke hacer, espero ke me echeis un cable, mirad estoy haciendo un formulario con un campo archivo que incluye el path de una imagen pues este path a la hora de mostrarlo en el archivo ke recoge los datos .php no muestra nada yo no tengo ni idea de porque pasa esto, os posteo el codigo del html y del php.

prueba1.html
---------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="visor.php" method="post" enctype="multipart/form-data" name="form1">


<p>
<input name="texto" type="text" id="texto">
</p>
<p>
<input type="file" name="file">
</p>
<p>
<input name="texto2" type="text" id="texto2">
</p>
<p>
<input type="submit" name="Submit" value="Enviar">
</p>
</form>
</body>
</html>

visor.php
-------------
<?
while(list($key,$var)=each($_POST))
{$$key=$var;}

echo "$texto";
echo "$texto2";
echo "$file";
?>
-------------------------------------------
Un saludo a [email protected], espero ke me echeis un cable.Gracias.


eth0
25 de Febrero del 2005
Pues pasa porque los campos de tipo FILE no envían la ruta del fichero, sino el fichero en sí. No puedes obtener esa ruta usando un campo FILE, porque no está pensado para eso.

micknico
25 de Febrero del 2005
no se si es esto lo k realmene necesitas pero con este codigo pude visualizar las fotos desde el php

Debemos comenzar creando la base de datos y la tabla
que almacenara el codigo de la foto, el thumbail y
la foto en si

create database fotos;
create table fotos.foto_foto(
idfoto int not null auto_increment primary KEY,
foto_grande mediumblob,
foto_pequena mediumblob,
);

///datos.php(pagina de configuracion)

<?php
$servidor="";
$nombre="";
$clave="";
?>


Ahora creamos un simple formulario que coja de nuestro
ordenador el thumbail y la foto(deben estar previamente
guardadas con el tamaño adecuado)
observar elType del formulario, esto nos permite enviar
tanto texto como ficheros

///form.php

<?
echo \'<font size=1>\';
echo \'<center>\';
echo\'<form enctype="multipart/form-data" action="guardararchivo.php" method="post">\';
echo \'Foto<br><input type="file" name="foto">\';
echo \'<br><br>\';
echo \'Thum.<br><input type="file" name="thumbail"><br><br>\';
echo \'<input type=hidden name=max_file_size value=1000000>\';
echo \'<input type="submit" value="Enviar archivo">\';
echo \'</form>\';
echo \'<br><br><a href=descargar_archivo2.php>Ver album</a>\';
?>

Esta es la pagina que guarda las fotos en la base de datos, da un mensaje de
error o de exito y nos devuelve al formulario, es muy sencilla

///guardadararchivo.php

<?php
require ("datos.php");
echo \'<center><font size=1>\';
[email protected]_connect($servidor,$nombre,$clave);
$res=mysql_select_db("fotos",$conexion);
if ( $conexion > 0 )
{

$archivo = $_FILES["foto"]["tmp_name"];
$tamanio = $_FILES["foto"]["size"];
$tipo = $_FILES["foto"]["type"];
$nombre = $_FILES["foto"]["name"];
$archivo_thumb = $_FILES["thumbail"]["tmp_name"];
$tamanio_thumb = $_FILES["thumbail"]["size"];
$tipo_thumb = $_FILES["thumbail"]["type"];
$nombre_thumb = $_FILES["thumbail"]["name"];
if ( $archivo != "none" && $archivo_thumb!="none")
{
$fp = fopen($archivo, "rb");
$contenido = fread($fp,$tamanio);
$contenido = addslashes($contenido);
fclose($fp);
$fp_thumb = fopen($archivo_thumb, "rb");
$contenido_thumb = fread($fp_thumb,$tamanio_thumb);
$contenido_thumb = addslashes($contenido_thumb);
fclose($fp_thumb);
$query = "INSERT INTO fotos.foto_foto VALUES(null,\'".$contenido."\',\'".$contenido_thumb."\')";
mysql_query($query);
if(mysql_affected_rows($conexion) > 0)print "Se ha guardado el archivo en la base de datos.";
else print "NO se ha podido guardar el archivo en la base de datos.";
}
else print "No se ha podido subir el archivo al servidor";
}else{
echo \'No conectado\';
}
echo "<HTML><SCRIPT>document.location=\'form.php\';</SCRIPT></HTML>";
?>


A continuacion muestro como se puede crear un album de fotos con enlace a esa misma foto
mas grande, la pequeña es el thumbail que hemos guardado con tamaño mas pequeño y la
grande tambien la tenemos en la bas de datos(recomiendo comprimir mediante codigo con
gzip)aqui no las comprimo porque se complica un poco el script.


///descargar_archivo2.php

<?php
require ("datos.php");
[email protected]_connect($servidor,$nombre,$clave);
$res=mysql_select_db("fotos",$conexion);

$qry = "SELECT idfoto,foto_pequena FROM fotos.foto_foto";
$res2 = mysql_query($qry);
for ($j=0;$j < mysql_num_rows($res2);$j++)
for ($i=0;$i < mysql_num_fields($res2);$i++)
{
$foto=basename(tempnam(getcwd(),\'tmp\'));
$foto.=".jpg";
if ($i==1)
{
$contenido2=mysql_result($res2,$j,$i);
$ft=fopen($foto,"w");
fwrite($ft,$contenido2);
fclose($ft);
echo \'<a href=fotogrande.php?idfoto=\'.mysql_result($res2,$j,0).\'><img src=\'.$foto.\'> \';
echo \'\';
}
}
echo \'<br><br><font size=1><center><a href=form.php>Insertar nuevas fotos</a>\';
?>


y finalmente creamos la pàgina donde visualizamos las fotos en grande
sencillo, no?

///fotogrande.php

<?php
require("datos.php");
[email protected]_connect($servidor,$nombre,$clave);
$res=mysql_select_db("fotos",$conexion);
$qry = "SELECT foto_grande FROM fotos.foto_foto where idfoto=\'".$_GET["idfoto"]."\'";
$res2 = mysql_query($qry);
$foto=basename(tempnam(getcwd(),\'tmp\'));
$foto.=".jpg";
$contenido2=mysql_result($res2,0,0);
$ft=fopen($foto,"w");
fwrite($ft,$contenido2);
fclose($ft);
echo \'<center><img src=\'.$foto.\'> <br><br>\';
echo \'<font size=1><a href=descargar_archivo2.php>Volver al album</a>\';
?>

Saludos!