Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/06/2007, 02:06
Avatar de shakaran
shakaran
 
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 10 meses
Puntos: 7
Re: Cambiar src en imagen

Umn, subir los ficheros con Ajax no. Pero si una vez enviados, los tenemos en la sesion de php, podemos hacer una llamada de ajax a otro archivo que nos muestre el contenido de la sesion, el la id del div que queramos (y asi ahorramos el iframe ocultos o iframes normales).

Estoy haciendo pruebas con tu codigo pero no se si hare algo mal.

He hecho 3 archivos.

-origen.php
-enviar.php
-recibir.php

El archivo de origen es el que tiene el formulario que enviara los datos al archivo enviar y este almacenara el archivo en la sesión. Luego el archivo recibir es el que muestra el archivo que contiene la sesión.

El caso es que me actualiza mal el iframe y al principio me muestra la url del iframe (porque...no lo se XD).

Aqui esta el codigo:

origen.php
Código:
<script type="text/javascript">	
function checkear(f)	{
	function no_prever() {
		alert("El fichero seleccionado no es válido...");
		//limpiar();
	}
	function prever() {
		//Guardar action y target original
		actionActual = f.form.action;
		targetActual = f.form.target;
		//Modificar action y target original
		f.form.action = "enviar.php";
		f.form.target = "ver";
		f.form.submit();//Enviar formulario
		//Restaurar action y target original
		f.form.action = actionActual;
		f.form.target = targetActual;
}

//Si tiene los formatos adecuados
(/\.(gif|jpg|png)$/i.test(f.value)) ? prever() : no_prever();
}
</script>

Pagina original:<br />
<br>
Subir archivo de tu pc:<br>
<form action="" method="post" enctype="multipart/form-data">
<input id="pc_imagen" name="archivo" type="file" size="25" onChange="checkear(this)" ><br>
<iframe src="recibir.php" id="ver" name="ver"></iframe>
</form>
enviar.php
Código:
<?php
	session_start();
	$defecto = "webmaster.gif";
	$Ok = isset($_FILES["archivo"]);
	$url = ($Ok) ? $_FILES["archivo"]["tmp_name"] : $defecto;
	list($anchura, $altura, $tipoImagen, $atributos) = getimagesize($url);
	$error = (isset($atributos)) ? 0 : 1;
	$los_tipos = array("gif", "jpg", "png");
	$tipo = ($Ok) ? "image/".$los_tipos[$tipoImagen - 1] : "image/gif";
	$fichero = ($Ok && ($error == 0)) ? $_FILES["archivo"]["name"] : $defecto;

	$onload = ($Ok) ? "onload='parent.datosImagen($tam, $ancho, $alto, $error)'": '';
	$datos_imagen = fread(fopen($datos, "rb"), filesize($datos));
	$_SESSION["cont"] = $datos_imagen;
	$_SESSION["tipo"] = ($error == 0) ? $tipo : "image/gif";
?>
<html>
<head>
<style type="text/css" >
html	{
	margin: 0;
	height: 100%;
}
body	{
	height: 100%;
	background-image: url(previendo.php?dato=<?=$fichero;?>);
	background-repeat: no-repeat;
	background-position: center center;
}
</style>
</head>
<body <?=$onload;?>>

</body>
</html>
recibir.php
Código:
<?php
session_start();
$url = ($_SESSION["cont"] == "")
	? fread(fopen("webmaster.gif", "rb"), filesize("webmaster.gif"))
	: $_SESSION["cont"];
$tip = ($_SESSION["tipo"] == "")
	? "image/gif"
	: $_SESSION["tipo"];
header("Content-type: $tip");
echo $url;
session_destroy();
?>

Cual el es el error?

PD: Cuando arreglemos esto, luego podiamos intentar enviar con ajax una peticion al archivo recibir.php tras haber enviado el formulario y que nos devuelva el contenido en un div.
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net