Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Visualizar imágenes antes de subirlas

Estas en el tema de Visualizar imágenes antes de subirlas en el foro de Frameworks JS en Foros del Web. Caricatos, Gracias por el manual "Revisar las imágenes antes de subirlas", que he conseguido implantar en el panel de control de mi web y funciona ...
  #1 (permalink)  
Antiguo 28/10/2008, 12:34
 
Fecha de Ingreso: octubre-2007
Mensajes: 8
Antigüedad: 17 años
Puntos: 0
Visualizar imágenes antes de subirlas

Caricatos,

Gracias por el manual "Revisar las imágenes antes de subirlas", que he conseguido implantar en el panel de control de mi web y funciona de maravilla. Es estupendo y no he encontrado nada que se le parezca en infalibilidad en cualquier browser.

Como la imagen ya se visualiza desde el servidor, me ayudarías mucho si me dijeras si es posible trabajar con lo que ya está subido para guardar la imagen en una carpeta concreta. Yo, por ahora, lo que hago es subirla como si de un formulario con campo file normal se tratara, con lo cual creo que la subo dos veces.

No soy un experto en php y no he conseguido interpretar bien tu script "receptor.php", que intuyo que es donde debe estar la "respuesta a mi duda".
  #2 (permalink)  
Antiguo 29/10/2008, 01:05
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: Visualizar imágenes antes de subirlas

Hola:

Para que puedan participar más usuarios, el citado manual se encuentra aqui: Revisar las imágenes antes de subirlas.

Es cierto que la estás subiendo 2 veces, pero se puede arreglar.

Sobre el código de receptor.php, en realidad tiene un código similar al print_r de php, o sea que muestra un array u objeto... creo que muestra los arrays $_GET, $_POST y $_FILES, así que me parece que no es la clave.

Fíjate que el código de la imagen se guarda en una variable de sesión php al igual que su tipo, con lo que para mostrarla nos ayudamos de un php adicional, previendo.php con este código:

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();
?>
Entonces, al enviar tu formulario, como ya está la imagen en una variable de sesión, debes deshabilitar ese control: onsubmit="archivo.disabled = true"...

Y en el receptor, abrir esa sesión, y usar una instrucción del tipo file_put_contents.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 30/10/2008, 04:56
 
Fecha de Ingreso: octubre-2007
Mensajes: 8
Antigüedad: 17 años
Puntos: 0
Respuesta: Visualizar imágenes antes de subirlas

Hola Caricatos,

Gracias por tu respuesta: tus pistas me han abierto los ojos y ¡HE CONSEGUIDO HACERLO! Estoy muy contento por esto.
Como tú dices, para que todos puedan participar y para que tú puedas hacer las observaciones que te parezcan oportunas, pongo a seguir el código que he hecho y después te haré unas preguntas.

Código referente al archivo que recibe los datos del tu formulario (en éste, además del campo file hay otro campo de texto "nombre", que servirá para dar nombre a la imagen en el servidor):

Código PHP:
session_start();
//determina el directorio de destino
    
$destino  "../userfiles/image/";

/////// CONSTRUCCION DEL NOMBRE DE LA IMAGEN EN EL SERVIDOR ///////////////
    
$nombre$_POST['nombre'];

//Elimina los espacios que el usuario haja usado al rellenar el campo de texto nombre de la imagen
    
$nombrestr_replace(" ","_",$nombre);

//Determinar la extensión de la imagen
    
$extension $_SESSION["tipo"]; // esta variable retorna algo como image/gif, image/jpg, etc
    
$extension explode('/',$extension);
    
$extension $extension[1];

//Nombre final que la imagen tendrá en el servidor
    
$nombre_foto =$nombre.".".$extension;

//Crea variable con en nombre de la imagen y el directorio donde será guardada
    
$destino_final$destino.$nombre_foto;



/////// GUARDAR EL CONTENIDO DE LA IMAGEN EN EL SERVIDOR CON EL NOMBRE CONSTRUIDO ///////////////
//Guarda en una variable la variable de sesión del contenido de la imagen
    
$archivo $_SESSION["cont"];

//Guarda dicho contenido en el directorio indicado con el nombre de imagen construído
    
file_put_contents($destino_final$archivo);

//Atribuye a ese archivo derechos de lectura
    
chmod ($destino_final0644)); 
OBSERVACIÓN:
En tu script "previendo.php", hay que eliminar la línea que destruye la sesión
//session_destroy();

PREGUNTAS:
1.- ¿Por qué destruyes la sesión en ese script? Lo pregunto también para saber si debo destruirla después de salvar la imagen. Ocurre que en la sesión también tengo variables de administrador pues ésto es parte de un panel de control para administrar una web de una asociación de antiguos alumnos de un colegio.

2.- ¿Es posible recoger el nombre de archivo local? He tenido que poner un campo de texto en el formulario para darle nombre a la imagen pues no sé si es posible recoger el nombre del archivo local.

3.- ¿Por qué tarda más del doble para mostrar la imagen que para subirla? No me refiero en este caso, claro. He hecho varias pruebas en que sólo pre visualizaba la imagen y otras en que sólo subía la imagen.

Bueno, creo que más sería abusar (si es que no lo he hecho ya).
Un saludo y muchas gracias por todo.
  #4 (permalink)  
Antiguo 30/10/2008, 11:11
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: Visualizar imágenes antes de subirlas

Hola:

Lo de la variable de sesión, claro que si te sirve no debes borrarla, pero al grabar el fichero deja de ser necesaria, así que puedes borrar las variables concretas (unset($_SESSION["tipo"]; unset($_SESSION["cont"])).. creo que se debe usar unset...

Para el nombre, con $_FILES["archivo"]["name"]... (mira lo que se obtiene con $_FILES...)

Lo del tiempo, no tengo mucha idea, pero dependerá de los datos que subas.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Última edición por caricatos; 31/10/2008 a las 23:48
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 09:14.