Cita:
Iniciado por danneg Así es, el primer iframe basta para hacer las cosas, aunque me sigo inclinando con el método AJAX, ya que FileReader también te envía este dato por POST como yo lo sugiero y posteriormente también puedes implementar tu plug-in que recorta la imagen.
Pero por otro lado, después te traeré un ejemplo de algo que hice similar a lo que tu quieres pero con iframes
Vale, haciendo caso a lo que ustedes me dicen
, usaré un solo iframe; en primera instancia, aparece lo siguiente (HTML) cuando el usuario entra la página de subida de imagen:
PD: He puesto lo esencial, los estilos y etiquetas que ya sabemos que deben ir (<html>, <head>, <body>, etc...) no las he puesto.
...
<iframe scrolling="no" src="upload_profile_photo.html""></iframe>
</div>
...
* (Lo que muestra el iframe) upload_profile_photo.html tiene el siguiente código:
...
<form id="form_upload_photo" enctype="multipart/form-data" name="frmMain" action="upload_image.php" method="post">
<input name="filUpload" id="filUpload" type="file" onchange="document.getElementById('form_upload_pho to').submit()">
//Este código lo que hace es que automáticamente sube la foto cuando el usuario la selecciona usando upload_image.php.//
<input id="cancel_upload_photo" type="reset" value="Cancelar">
</form>
...
upload_image.php:
<?php
$target = "images/";
$target = $target . basename( $_FILES['filUpload']['name']);
$filUpload_size = $_FILES['filUpload']['size'];
$filUpload_type = $_FILES['filUpload']['type'];
$ok=1;
//Nuestra condición de tamaño
if ($filUpload_size > 350000)
{
echo "Este archivo es demasiado grande<br>";
$ok=0;
}
//Nuestra condición de límite de tipo de archivo
if ($filUpload_type =="text/php")
{
echo "No se aceptan archivos PHP<br>";
$ok=0;
}
//Aquí chequeamos que $ok no fue definida como 0 por error
if ($ok==0)
{
Echo "Lo lamentamos, tu archivo no fue subido";
}
//Si todo está bien, lo subimos
else
{
if(move_uploaded_file($_FILES['filUpload']['tmp_name'], $target))
{
echo '
//
Bueno aquí va otro código HTML, que aparece dentro del mismo iframe pero es un HTML distinto al de subida de imagen, se supone que este está orientado a su edición, por lo tanto debe de mostrar la imagen subida previamente y posteriormente guardarla.
//
';
}else{
echo '<script>window.location="welcome.html"</script>';
}
?>
Para lo de arriba se me ha ocurrido lo siguiente, a ver que opinan ustedes:
Visualizar la imagen subida:
Esto en el head:
<script language="JavaScript">
function showPreview(ele)
{
$('#imgAvatar').attr('src', ele.value); // for IE
if (ele.files && ele.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#imgAvatar').attr('src', e.target.result);
}
reader.readAsDataURL(ele.files[0]);
}
}
</script>
y esto en body:
<img id="imgAvatar" src="Es aquí donde me lío, ¿Cómo hago que muestre la última subida?, suponiendo que tenga xxxx usuarios y todos estén subiendo fotos de perfil, ¿Cómo no confundirlas?">
He pensado en crear una base de datos y guardo el nombre junto a un id auto-increment pero y ¿Si el usuario cambia constantemente de foto de usuario qué src="??" poner para que muestre la nueva seleccionada?
Bueno, yo espero no aburrirles con esto, en todo caso agradezco sus comentarios y ayudas.