Foros del Web » Programando para Internet » ASP Clásico »

comprobar si existe antes de subir archivo

Estas en el tema de comprobar si existe antes de subir archivo en el foro de ASP Clásico en Foros del Web. hola, tengo un form que envia una foto y cuando sube, miro en base de datos para si existe no incluirla y devuelve que no ...

  #1 (permalink)  
Antiguo 16/06/2004, 04:12
 
Fecha de Ingreso: junio-2004
Mensajes: 35
Antigüedad: 19 años, 11 meses
Puntos: 0
comprobar si existe antes de subir archivo

hola, tengo un form que envia una foto y cuando sube, miro en base de datos para si existe no incluirla y devuelve que no se pudo guardar la foto porque existe.
pero resulta que como sube la foto, pues tarda y se desperdicia ese tiempo, y mi pregunta es la siguiente:

¿hay alguna forma de subir primero el nombre de la foto y si no existe que suba la foto despues?

No creo que haga falta ningún código, pero si hace falta lo decís..

gracias
  #2 (permalink)  
Antiguo 16/06/2004, 05:05
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 3 meses
Puntos: 1
Puedes usar el objeto FSO para comprobar la existencia de un archivo

Partimos de la base de que pasas el nombre y extension de la imagen en la variable imagen, esta la puedes obtener del formulario mediante el que intentas subirla, por ejemplo.

<%
Set filesys = CreateObject("Scripting.FileSystemObject")
If filesys.FileExists(server.mappath("images/" &imagen)) Then
' codigo de lo que quieres que haga si SI existe
else
' codigo de lo que quieres que haga si NO existe
end if
%>
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net

Última edición por maestro; 16/06/2004 a las 05:06
  #3 (permalink)  
Antiguo 16/06/2004, 05:19
 
Fecha de Ingreso: junio-2004
Mensajes: 35
Antigüedad: 19 años, 11 meses
Puntos: 0
No te cojo la idea.
El usuario pone una foto y le da a submit, entoces sube la foto, despues mira en la BD, pero ya ha subido la foto. mi idea es que al dar a submit, no suba la foto, que primero mire:
Esta es la sintasis que yo tengo:
-se rellena el formulario
-se sube la foto
-abro base de datos
-compruebo si existe
-si existe devuelve no se pudo subir
-si no existe la guarda en su directorio y la añade a la base de datos
fin
explica un pocom mas tu idea a ver si la pillo
yo habia pensado en hacer un onsubmit y en el hacer esa rutina que devuelva true o false
ok
  #4 (permalink)  
Antiguo 16/06/2004, 05:24
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 3 meses
Puntos: 1
El paso deberia ser:
-se rellena el formulario
-abro base de datos
-compruebo si existe
-si existe devuelve no se pudo subir
-si no existe la guarda en su directorio y la añade a la base de datos
fin

La pagina que recoge los datos del fomulario deberia, en primera instacia, recorrer todo el recordset y comparar si esa foto existe, si no existe pasa al segundo paso del codigo y ya la escribe el el disco o en la base de datos.

Depende de como lo hagas:
¿la introduces como un campo MIME en la BASE de datos o la guardas en un directorio y solo almaceneas en la base el nombre y la extension?
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #5 (permalink)  
Antiguo 16/06/2004, 05:30
 
Fecha de Ingreso: junio-2004
Mensajes: 35
Antigüedad: 19 años, 11 meses
Puntos: 0
Si ese seria el paso , pero por eso pregunto aqui, porque no se hacerlo y tampoco entiendo como se puede abrir la base de datos antes de que el cliente le de a submit.

En la BD solo guardo el nombre y la extension, la portada va a un directorio

Última edición por eusol; 16/06/2004 a las 05:59
  #6 (permalink)  
Antiguo 16/06/2004, 08:09
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 3 meses
Puntos: 1
entonces me lo pones aun mas facil:

En la pagina donde recibes el formulario pasas el nombre de la imagen como variable.
Lo recibes y lo metes en bucle de comprobacion tipico de base de datos.
<%
do while not rs.eof
if rs("campoimagen")=varableimagen
then
' Ni siquiera deberias usar el objeto FSO, con comprobar el campo de la
' base de datos seria suficiente
' Pon el codigo que quieras que se ejecute en el caso de que exista
' por ejemplo que te redireccione a otra pagina y te diga que la foto ya existe
' y que no se puede subir

else
' en caso contrario que actualize o lo que quieras que haga
' Creamos un FSO y subimos la imagen
' añadimos un registros en la base de datos
end if
Loop
%>
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net

Última edición por maestro; 16/06/2004 a las 08:13
  #7 (permalink)  
Antiguo 16/06/2004, 08:38
 
Fecha de Ingreso: junio-2004
Mensajes: 35
Antigüedad: 19 años, 11 meses
Puntos: 0
Hola denuevo maestro.
O yo no me he esplicado bien o tu no te has enterao.
El problema esta en que cuando recibo la foto, ya ha subido y ha tardado un tiempo que es el que me quiero ahorrar si la foto existe.
Lo que tengo funciona correcto, sube l foto y hace lo que tiene que hacer tanto si existe como si no.
Lo que quiero es que se suba primero el nombre de la foto, porque resulta que tengo unas 170.000 fotos y es muy probable que ya esté, y quiero ahorrar tiempo a quien me suba fotos.

Me entiendes ahora?
  #8 (permalink)  
Antiguo 16/06/2004, 08:42
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 3 meses
Puntos: 1
Eso mismo es lo que te estoy diciendo yo, NO ENVIES LA FOTO!!!, sino solo el nombre a una pagina que comprueba si existe, si no esta en la base de datos entonces SI, recogela en el servidor.

Recoge la variable del nombre, no el contenido en multipart/mime sino solo el nombre y comparala
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #9 (permalink)  
Antiguo 16/06/2004, 08:43
 
Fecha de Ingreso: junio-2004
Mensajes: 35
Antigüedad: 19 años, 11 meses
Puntos: 0
pues dime como mando el nombre solo?
eso es lo que no se
  #10 (permalink)  
Antiguo 16/06/2004, 08:50
 
Fecha de Ingreso: junio-2004
Mensajes: 35
Antigüedad: 19 años, 11 meses
Puntos: 0
Mira este es mi formulario, normal como todos

<form action="subirinsert.asp" method="post" enctype="multipart/form-data" onsubmit="return FrontPage_Form1_Validator(this)" name="FrontPage_Form1">
<td><font color="#729DF0">Archivo :</font></td>
<td style="padding: 0" colspan="2"><input type="file" name="file" size="38"></td></tr>
<td><font color="#729DF0">Nick :</font></td>
<td><input type="text" name="name" size="35"></td>
<td><p align="right"><select name="tipo">
<option value="Audio">Audio</option>
<option value="Vhs">Vhs</option>
<option value="Dvd">Dvd</option>
.......................
<option selected value="tipo"> - Tipo -</option>
</select></p></td></tr>
<input type="hidden" name="fecha" value="<%=date()%>">
<input type="hidden" name="url" value="/public/novedades/">
<td> </td><td colspan="2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<p align="center">
<input type="submit" value="Enviar" name="B1">
<input type="reset" value="Restablecer" name="B2">
</form>

Cuando el usuario de a submit, sube la foto, y despues de un tiempo recibe la foto se ha subido o no se ha subido.

que hay que hacer o modificar para que el submit no envie la foto, que envie solo el nombre y despues si no existe que mande la foto?
?

Última edición por eusol; 16/06/2004 a las 08:52
  #11 (permalink)  
Antiguo 16/06/2004, 16:17
Avatar de MartYn  
Fecha de Ingreso: junio-2004
Ubicación: MTY-Mexico
Mensajes: 49
Antigüedad: 19 años, 11 meses
Puntos: 0
Sonrisa Yo quiero aprender esto

A mi me interesa esto

Pegue el Formulario pero resulta que esta mal...

Que necesito para que suban archivos ?

como saben donde se van a guardar ?

la tabla de la base de datos que campos necesitan ?

please expliquen me interesa
  #12 (permalink)  
Antiguo 16/06/2004, 17:23
Avatar de LeCLUB  
Fecha de Ingreso: abril-2003
Ubicación: Barcelona (España)
Mensajes: 205
Antigüedad: 21 años
Puntos: 1
MartYn, mírate esta página

http://www.asptutor.com/asp/vart.asp?id=68
  #13 (permalink)  
Antiguo 17/06/2004, 01:01
 
Fecha de Ingreso: junio-2004
Mensajes: 35
Antigüedad: 19 años, 11 meses
Puntos: 0
Maryin, el formulario no está mal
necesita las rutinas para verificarse antes de mandar y el archivo subirinsert.asp, y despues el subirinsert.asp necesita un componente para recoger los datos binarios.

Maestro ya no dices nada............ como mando el nombre antes del archivo?
  #14 (permalink)  
Antiguo 17/06/2004, 03:15
Avatar de LeCLUB  
Fecha de Ingreso: abril-2003
Ubicación: Barcelona (España)
Mensajes: 205
Antigüedad: 21 años
Puntos: 1
Eusol,

Si me he enterado bien, tu lo que quieres es que el usuario seleccione la imagen en el formulario, y SIN QUE LA ENVÍE EL FORMULARIO (porque según tu tarda mucho en enviarla), el ASP "detecte" por arte de magia el nombre del archivo, que lo busque en el Servidor y/o BBDD, y si no existe, que LA RECUPERE y la grabe en el servidor y actualice la BBDD. Weno, y que en caso de que ya exista en el servidor, como en principio NO SE HA SUBIDO, no pasa nada, redireccionas o muetsras un mensaje de eror y listos.

Weno, pues esto es IMPOSIBLE de hacer.

Te explico, para que el ASP pueda "ver" el nombre de la imagen que el usuario quiere subir, es IMPRESCINDIBLE que la imagen ESTÉ en el lado del servidor (dentro de un objeto, en el servidor físicamente, o donde sea, pero DEBE de estar), por lo que el ENVÍO de la imagen al servidor es necesaria. No hay más opciones.

Una vez subida la imagen, y tal como te ha comentado maestro, tampoco es necesario que mires si la misma existe o no fisicamente en el servidor, ya que según tú, si ya existiera estaría su nombre en la BBDD, así que lo más rápido que se puede hacer es un SELECT a la BBDD para verificar que esa imagen no esté en el servidor.

Caso 1, la imagen NO ESTÁ EN LA BBDD (y por lógica, tampoco en el servidor)

Pues como ya tienes la imagen pululando por la página ASP (dentro de un objeto, etc), solo tendrás que grabarla a una carpeta del servidor (instantaneo) y actualizar la BBDD

Caso 2, la imagen SI ESTÁ EN LA BBDD (y por lógica, en alguna carpeta del servidor)

Pues tan facil como cerrar el objeto que tiene la imagen y mostrar un mensaje de error, no hace falta hacer nada más.

Ahora bien, si tu problema principal es que los usuarios que suban las imágenes al servidor pueden subir archivos excesivamente grandes (3, 5, 10 megas), lo mejor que puedes hacer es mediante Javascript verificar el tamaño de la imagen, sus dimensiones, formato de archivo, etc etc

Un saludo
  #15 (permalink)  
Antiguo 17/06/2004, 05:28
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Vaya lío que se está montando. Mi propuesta es la siguiente:

Realizar la subida en dos partes con dos formularios distintos. En el primero se selecciona la imagen, o el archivo a subir, y se envía el nombre para que lo procese ASP. Esto se haría recogiendo el valor del campo del formulario. Se procesa comprobando si existe ya en la base de datos. Si existe se devuelve el error de que ya existe y si no se redirecciona a una página con un formulario con los campos ocultos en el que haya un botón para confirmar el envío. Así, además, el usuario comprueba si los datos que quiere subir son los correctos antes de hacerlo.

Todo esto se podría hacer con una sola página ASP o con varias

Más o menos ¿no?

Por cierto MartYn, no me parece muy bien que te metas en temas para replantear cosas, aunque tengan que ver. Si quieres saber, abre un tema nuevo planteando tus dudas. Y eso sí, leete un manual sencillito primero.

Un saludo a todos.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #16 (permalink)  
Antiguo 17/06/2004, 05:46
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 3 meses
Puntos: 1
Yo tambien creo que seria la opcion mas logica y creo que ademas con el planteamiento actual seria la unica.
Almacenas en una varible el contenido binario de la imagen y en otra el nombre extraido del campo del formulario, esto se lo pasas a una primera pagina que comprueba si existe.

Pero hay un problema!!1, incluso si pasas los valores a una pagina intermedia la imagen es enviada al servidor porque sino no tendriamos la variable creada para despues pasarla a la pagina 2 de envio, aunque sea como campo oculto.

No se si me explico, pero me parece que esto tiene mal resultado, estoy casi por decir que no se puede hacer la comprobacion sin enviar la imagen.

Hace tiempo tuve un caso similar, lo solucione aceptando el envio de la imagen, despues de esto compruebo el nombre del fichero con FSO, lo comparo con los nombres de la la base de datos y si existe usando FSO lo borro y redirecciono al usuario a una pagina donde le digo que la imagen ya existe.
En caso contrario, añado un registro a la base de datos e informo al usuario de que se ha realizado con exito.

Pero en cualquier caso la imagen debe ser enviada, ese es el problema.

SALVO!!!!!

Que cargemos todos los nombre de las imagenes de la base de datos en un ARRAY unidimensional de javascript y las comparemos del lado del cliente antes de enviarlas.

Pero eso ya me supera en JS no estoy demasiado puesto.
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net

Última edición por maestro; 17/06/2004 a las 05:48
  #17 (permalink)  
Antiguo 17/06/2004, 05:54
 
Fecha de Ingreso: junio-2004
Mensajes: 35
Antigüedad: 19 años, 11 meses
Puntos: 0
Bien, muy bien........Gracias a todos por responder.

Pero lo que no me explico es que todos me dais explicaciones para que suba la imagen, mirar en la BD y como guardarla y tal y tal ........
Pues he dicho un monton de veces que todo eso ya lo hago correctamente, que no necesito explicación de eso porque ya me funciona.
Lo que quiero es agilizar el proceso (para que en el caso de que exista, el usuario no pierda ese tiempo), y para ello solo hay que enviar primero solo el nombre de la foto.
Leclub, dices que no se puede, pues yo opino que si se puede, lo que pasa es que yo no se, y por supuesto los que han leido el post hasta ahora tampoco.
Voy a hacer una explicación un poco a mi modo para que alguien que sepa adaptar un codigo lo postee, es simple y facil, solo que yo no se programar tanto.

-- el usuario rellena el formulario y selecciona una foto de su PC y da a submit (enviar)
-- Hay que programar algo en una rutina onsubmit (algo parecido a cuando se pone el archivo es muy grande o el archivo no es .jpg) para que coja el nombre y lo mande para revisarlo en la BD.
-- entoces es cuando se devuelve true o false para que el formulario mande de verdad la foto.

Me explico mejor ahora?

Solo necesito una rutina dentro del validator para que este validator vaya a una pagina xxx.asp mire en BD y si existe devuelve false y si no existe devuelve true
por ejemplo esta es la primera linea del form:

<form action="subirinsert.asp" method="post" enctype="multipart/form-data" onsubmit="return Form1_Validator(this)" name="Form1">

esto hace que mire primero en las lineas de validator y no manda la foto hasta que no reciba true.
esto es una de las rutinas de validator:

[/b]function Form1_Validator(theForm)
{
if (theForm.name.value == "")
{
alert("Escriba un Nick (nombre).");
theForm.name.focus();
return (false);
}
return (true);
}[/b]
Con esto hace que el form no manda nada hasta que esto verifica que se ha escrito un nick.
Pues bien aqui es donde voy yo, hay que hacer algo que capte el nombre de la foto vaya a la BD y mire y segun vea devuelve true o false, y solo entonces si recibe true es cuando el form manda la foto de verdad o si recibe false pues el alert dice que existe.

Me expliqué mejor ahora..... pues venga a ver si hay alguien que me haya captado la idea.
un saludo
gracias
  #18 (permalink)  
Antiguo 17/06/2004, 06:01
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
Me falto concretar. Voy.

Si ponemos el campo bianario del archivo fuera de las etiquetas FORM, los datos que contenga no se enviarán con el formulario ¿no?

Entonces se trata de capturar el texto contenido en ese campo antes de enviar el formulario. Si el botón Submit lo cambiamos por un botón normal que ejecute un script para capturar ese texto y luego enviarlo automáticamente como valor de un campo oculto del formulario, podremos enviar sólo la cadena de texto que hace referencia al archivo. Una vez se comprueba si existe o no, se crea un formulario en el que ya incluimos un campo binario que contenga la cadena que habíamos enviado antes. Ahora sí, podemos enviar el formulario con el archivo incluido.

¿Me he explicado?

Veremos pues.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #19 (permalink)  
Antiguo 17/06/2004, 06:04
 
Fecha de Ingreso: junio-2004
Mensajes: 35
Antigüedad: 19 años, 11 meses
Puntos: 0
mientras escribia el anterior mensaje, se recibieron los ultimos dos, no los habia leido, perdón si moleste con lo de que nadie de los que habian leido el post hasta ahora......bla.....bla......
  #20 (permalink)  
Antiguo 17/06/2004, 06:05
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 3 meses
Puntos: 1
Ya, pero la comparacion que haces es muy poco precisa, comparar un NICK es enviar unos pocos BYTES de TEXTO ASCII, no enviar un binario de 50 o 100 KB como en al caso de una imagen.

Comparar un nombre es rapido porque el nombre ocupa poco pero el proceso es el mismo que comparar una imagen, solo que esta tarda porque es grande.

Como ya te dije, la solucion rapida pasa por JAVASCRIPT cargando todos los nombres en el cliente y asi no necesitamos enviar nada ni consultar nada al servidor.

Yo creo que tu opcion es cargar todos lo nombres es un ARRAY y compararlos en el evento onsubmit, como tienes ya preparado.
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net

Última edición por maestro; 17/06/2004 a las 06:07
  #21 (permalink)  
Antiguo 17/06/2004, 06:09
 
Fecha de Ingreso: junio-2004
Mensajes: 35
Antigüedad: 19 años, 11 meses
Puntos: 0
maestro estas liado
eso es lo que pretendo mandar solo el nombre de la foto unos pocos bites no 100 o 200 kb
  #22 (permalink)  
Antiguo 17/06/2004, 06:17
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 20 años, 4 meses
Puntos: 6
Mira después de leer todas las parrafadas creo que lo más rápido es lo que siempre hago yo, el campo de la imágen es autonúmerico y el nombre de la imágen lo asigna la base de datos, así nunca abrá confusión. Si la imágen anterior era la 233.jpg la siguiente será 234.jpg por coj...

Lo único que hago es tener otro campo dónde almaceno la extensión.

Saludos, que lio por Diosssss!!
  #23 (permalink)  
Antiguo 17/06/2004, 06:24
 
Fecha de Ingreso: junio-2004
Mensajes: 35
Antigüedad: 19 años, 11 meses
Puntos: 0
vaya pempas, ya has solucionado el tema............................
ale.....la imagen con un numero más y luego un millon de repes
Para que quiero entoces mirar en la BD? para no repetirla,
hombre lee primero y enterate, y si no no contestes
  #24 (permalink)  
Antiguo 17/06/2004, 06:30
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 20 años, 4 meses
Puntos: 6
¿Como que un millón de repes? pero no te enteras que lo que he puesto es que el nombre de la imágen la asignas tu, ¿como quieres tener dos imágenes repetidas si el campo es Autonumérico?

Comprende lo que lees primero y después contesta :P

Yo siempre lo he utilizado y con más de 1000 imágenes nunca me a fallado.

Salu2
  #25 (permalink)  
Antiguo 17/06/2004, 06:35
 
Fecha de Ingreso: junio-2004
Mensajes: 35
Antigüedad: 19 años, 11 meses
Puntos: 0
Si hombre repes no con el nombre pero con el mismo dibujo
y yo no tengo 1000 tengo 140.000 y preparandose 70.000 más
  #26 (permalink)  
Antiguo 17/06/2004, 07:51
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 6 meses
Puntos: 4
No es por meter más zizaña, pero creo que la opción que he dado antes, aunque un poco liosa de preparar es la más efectiva.

maestro, un array con más de 100.000 elementos creo que la cosa se saturaría ¿no?

eusol y pempas, a ver si nos calmamos un poquito. El problema del autonumérico es que la base ya está creada y con muchísimos registros. Si se hiciera desde cero sería una buenísima solución.

Si se apuesta finalmente por mi opción podemos currarnos entre todos el código ¿de acuerdo?

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #27 (permalink)  
Antiguo 17/06/2004, 08:38
 
Fecha de Ingreso: junio-2004
Mensajes: 35
Antigüedad: 19 años, 11 meses
Puntos: 0
Ok Bravenap, el que la BD esté hecha no es problema, hago otra rápido
lo que pasa es que no entiendo mucho de programar, solo machaco algunos códigos y los modifico hasta que funcionan.
explica el tema un poco mejor a ver si cojo algo y si puedes poner un ejemplo sería mejor, aunque sigo pensando que si se pudiera escribir en medio de esto en asp, sería capaz de solucionarlo.

function Form1_Validator(theForm)
{
if (theForm.file.value <> "")

<% ¿Aquí se puede poner código asp? %>

{
alert("Esta portada existe.");
theForm.name.focus();
return (false);
}
return (true);
}

Saludos
  #28 (permalink)  
Antiguo 17/06/2004, 11:06
Avatar de LeCLUB  
Fecha de Ingreso: abril-2003
Ubicación: Barcelona (España)
Mensajes: 205
Antigüedad: 21 años
Puntos: 1
Jojsojsosjos, la que se ha liao en este Post, mola mola xDDDDDD

Weno, la verdad es que despues de estar pensando un buen rato, me he dado cuenta de que si que se podía hacer la comprobación, pero claro, hay que utilizar Javascript para ello, así que manos a la obra

Las siguientes 2 páginas trabajan de la siguiente manera:

Página INDEX.HTML
- Es donde está el formulario con el campo del archivo, y con el botón ENVIAR deshablitado por defecto
- Una vez se selecciona un archivo, mediante Javascript se abre un popup automáticamente y se carga la página COMPRUEBA.ASP

Página COMPRUEBA.ASP
- Recupera el nombre del achivo que le ha pasado INDEX.HTML, y hace la comprobación en la BBDD
- Si el archivo existe en la BBDD, muestra un mensaje de error y un botón de Cerrar Ventana
- Si el archivo NO existe en la BBDD, se cierra la ventana automáticamente, y se activa el botón de ENVIAR de la página INDEX.HTML

Weno, pos al trapo, aquí teneis el código (lo que ma costao el jodio) xDDD

INDEX.HTML
Código PHP:
<html>
<
head>
<
title>Subir Fotos</title>

<
script language="JavaScript">
 
function 
verificar(){
  var 
= (screen.width/2)-100;
  var 
= (screen.height/2)-200;
  var 
posicion "left="+X+",top="+Y;
  var 
ruta document.formulario.archivo.value;
  var 
nombre ruta.split('\\');
  var 
nombre nombre[nombre.length-1];
  var 
direccion 'comprueba.asp?nombre=' nombre ''
  
var referenciaVentana window.open(direccion,'Preg','toolbar=no,location=no,directories=no,status=no, menubar=no,scrollbars=no,resizable=no,width=200,height=100,'+posicion);
}
function 
borrar(){
  
document.formulario.archivo.value "";
  return 
false;
}
</script>
</head>
<body>

<table border="0" width="300" border="1" align="center">
  <tr>
    <td>
 <form name="formulario" method="get" action="final.asp">
  <input name="archivo" type="file" onchange="verificar()" onKeyDown="return borrar()" onKeyUp="return borrar()" size="10">
  <input type="submit" name="Submit" value="Enviar" disabled>
 </form>
 </td>
  </tr>
</table>
</body>
</html> 
COMPRUEBA.ASP
Código PHP:
<%@LANGUAGE="VBSCRIPT"%>
<%
nombre_archivo Request.QueryString("nombre")
 
'Aquí tendremos que ejecutar la consulta a la BBDD
 
accion = ""
mensaje = ""
 
if NOT Rs.EOF Then

mensaje = "<center><font size='
2' face='VerdanaArialHelveticasans-serif'>"
mensaje = mensaje & "El Archivo <b>" & nombre_archivo & "</b> ya existe en la BBDD<br><br>"
mensaje = mensaje & "<input type='
button' name='Submit' value='Cerrar' onclick='javascript:window.close()></font></center>"

else

accion = "
correcto()"

End if
%>
 
<html>
<head>
<title>Verificando...</title>
 
<script language="
JavaScript">

function correcto(){
opener.document.formulario.Submit.disabled = false;
window.opener.focus();
window.close();
}
</script>
</head>
<body OnLoad="
<%= accion %>">
<%= mensaje %>
</body>
</html> 
Si quereis hacer una prueba sin tener que acceder a la BBDD, cambiar esta línea de COMPRUEBA.ASP:

if NOT Rs.EOF Then

por esta (para ver que pasa cuando el archivo existe en la BBDD):

If correcto <> 1 Then

o por esta (para ver que pasa cuando el archivo NO existe en la BBDD):

If correcto = 1 Then


Bueno, ya direis que tal ;)
  #29 (permalink)  
Antiguo 17/06/2004, 11:41
Avatar de maestro  
Fecha de Ingreso: febrero-2002
Ubicación: España
Mensajes: 2.364
Antigüedad: 22 años, 3 meses
Puntos: 1
!!ESTOY SATURADO!!!
__________________
Jose Maria Fernandez
[email protected]
Http://www.expansionweb.net
  #30 (permalink)  
Antiguo 17/06/2004, 11:47
Avatar de LeCLUB  
Fecha de Ingreso: abril-2003
Ubicación: Barcelona (España)
Mensajes: 205
Antigüedad: 21 años
Puntos: 1
Cita:
Iniciado por maestro
!!ESTOY SATURADO!!!
jajajsjasjasajaj, pues te imaginas el pobre iluso que entre y empiece a leerse uno por uno las respuestas de este POST ?

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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:18.