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

Validar archivos antes de subir al servidor..

Estas en el tema de Validar archivos antes de subir al servidor.. en el foro de ASP Clásico en Foros del Web. Hola a todos, saben etoy programando en ASP y tengo que subir archivos al servidor, estoy utilizando el XELUPLOAD, bueno mi problema es el siguiente: ...
  #1 (permalink)  
Antiguo 30/03/2006, 11:42
 
Fecha de Ingreso: diciembre-2004
Mensajes: 133
Antigüedad: 19 años, 5 meses
Puntos: 0
Pregunta Validar archivos antes de subir al servidor..

Hola a todos, saben etoy programando en ASP y tengo que subir archivos al servidor, estoy utilizando el XELUPLOAD, bueno mi problema es el siguiente:

Tengo esta pagina en donde elijo los archivos a subir (escoger.asp)

<form name="frmsubir" action="upload.asp" enctype="multipart/form-data">
archivo: <input type="file" name="archivo">
imagen: <input type="file" name="img">
<input type="submit" value="Enviar">
</form>

En la pagina upload.asp esta el codigo que recibe los datos y llama a la clase xelupload, hasta aca todo es comprensible, el problema surge cuando quiero validar a los campos file es decir cuando saber cual tengo que subir (el archivo o la imagen), pues aparte de subirlos los almaceno en una base de datos que esta en SQL2000,,

Espero me haya dejado entender, quiero saber cual de los dos he ingresado (archivo o imagen) para de esa manera almacenar en la Base de Datos,, y si no he ingresado nada pues que me muestre un mensaje,, ah en la pagina "upload" es en donde subo los archivos y a la ves almaceno en la base de datos..

Estaba pensando en validar desde el ingreso (escoger.asp) es decir enviar un campo "hidden", indicando que campo file es el que tiene contenido (archivo o imagen),, pero nose quisiera el consejo de los maestros..

Gracias.
__________________
Mina
  #2 (permalink)  
Antiguo 30/03/2006, 12:12
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 3 meses
Puntos: 11
si no sube al servidor.. no se ejecuta codigo ASP..
lo que pides es una validacion del lado del cliente...

Eso es javascript


Cita:

script language="JavaScript" type="text/javascript">


extArray = new Array(".gif", ".jpg",".png",".jpeg");


function LimitAttach(form, file) {
allowSubmit = false;
if (!file) return;
while (file.indexOf("\\") != -1)
file = file.slice(file.indexOf("\\") + 1);
ext = file.slice(file.indexOf(".")).toLowerCase();
for (var i = 0; i < extArray.length; i++) {
if (extArray[i] == ext) { allowSubmit = true; break; }
}
if (allowSubmit) {}
else
alert("Se permiten unicamente archivos con la extención: "
+ (extArray.join(" ")) + "\nPor favor, seleccione otro archivo "
+ "e intente de nuevo.");
return allowSubmit;
}


function validarcampos(objeto)
{
if (objeto.archivo.value)
{ alert("Pon tu archivo pe.. o lo vas a dejar vacio?"); return 0;}

if (LimitAttach(objeto, objeto.archivo.value)==false)
{return;}
}

</script>
Saludos.
  #3 (permalink)  
Antiguo 30/03/2006, 12:25
Avatar de ElAprendiz  
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 22 años, 3 meses
Puntos: 2
lo que puedes hacer es obtener los ultimos 4 caracteres de archivo y asi saber de que tipo es.
  #4 (permalink)  
Antiguo 30/03/2006, 12:43
 
Fecha de Ingreso: diciembre-2004
Mensajes: 133
Antigüedad: 19 años, 5 meses
Puntos: 0
Gracias por responder

Sabes con esa validacion, practicamente obligo a que se ingrese algo, y bueno no es necesario el ingreso, nose si me deje entender osea obviamente tengo que ingresar uno de los dos, el hecho esta en reconocer cual ingrese (archivo o imagen), para de esa manera, guardarlo en la base de datos con un nombre generado dinamicamente (para que no hayan equivocaciones), y obvio cada archivo tiene un nombre diferente, y si ingreso los dos entonces tendre que insertar a los dos en mi base de datos

Espero haya quedado claro, gracias
__________________
Mina
  #5 (permalink)  
Antiguo 30/03/2006, 13:06
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
El xelupload tiene una propiedad llamada .TipoContenido que te da, el tipo del contenido, jeje

Solo guarda ese dato en un campo varchar de la tabla y listo, en la página que lo abre, pones el tipo de ese campo y se abrirá correctamente.

Saludos
  #6 (permalink)  
Antiguo 30/03/2006, 13:24
 
Fecha de Ingreso: diciembre-2004
Mensajes: 133
Antigüedad: 19 años, 5 meses
Puntos: 0
Myakire tienes razon

Sabes, si el xelupload tiene esa propiedad pero esta propiedad funciona cuando se instacia el objeto,, haber si me dejo entender.. el siguiente es un codigo del xelupload:

Cita:
Dim up, fich
set up = new xelUpload
up.Upload()
Response.Write("Número de ficheros subidos: " & up.Ficheros.Count & "<br>")
set fich = up.Ficheros("archivo")
Response.Write("<ul>")
Response.Write("<li>Nombre: <b>" & fich.Nombre & "</b></li>")
Response.Write("<li>Tamaño: <b>" & fich.Tamano & "</b> bytes (" & FormatNumber(fich.Tamano / (1024*1024)) & " Mb)</li>")
Response.Write("<li>Tipo MIME: <b>" & fich.TipoContenido & "</b></li>")
Response.Write("</ul>")
Pues como te daras cuenta tengo que hacer esto: "set fich = up.Ficheros("archivo")", para que pueda acceder al tipo de archivo ¡¡verdad!!, bueno pues imaginate sino ingrese nada en el archivo sino en la imagen o peor aun sino ingrese ninguno,,,, pues simplemente me botaria un error en esta linea: "set fich = up.Ficheros("archivo")", Ahora entiendes pok quiero saber cual es el que ingresado (archivo o imagen)...
__________________
Mina
  #7 (permalink)  
Antiguo 30/03/2006, 13:28
Avatar de ElAprendiz  
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 22 años, 3 meses
Puntos: 2
pero el mismo xelupload tiene una linea en que puedes saber si no has subido archivos

if objUpload.Ficheros.Count = 0 then
  #8 (permalink)  
Antiguo 30/03/2006, 13:30
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Pues no, por que con solo poner un if, solucionas esa posibilidad de error:

Cita:
if up.Ficheros.Count > 0 then
set fich = up.Ficheros("archivo")
....
Saludos

EDITADO: Choque con ElAprendiz, lo que tardé en leer y escribir
  #9 (permalink)  
Antiguo 30/03/2006, 13:39
 
Fecha de Ingreso: diciembre-2004
Mensajes: 133
Antigüedad: 19 años, 5 meses
Puntos: 0
gracias

Ambos tienen razon el xelupload tiene el: up.Ficheros.Count ,, con el cual descarto la posibilidad de haber o no ingresado un archivo ahora la duda es saber si es que solo he ingresado uno (archivo o imagen),, como saber cual tengo que instanciar y cual no:

set fich = up.Ficheros("archivo")
o
set fich_1 = up.Ficheros("imagen")

recuerden que tengo que generar nombres para ambos..
__________________
Mina
  #10 (permalink)  
Antiguo 30/03/2006, 13:49
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
¿Cual es el problema?

Tomate un minuto para pensar en las opciones que ya te hemos dado.

saludos
  #11 (permalink)  
Antiguo 30/03/2006, 14:11
 
Fecha de Ingreso: diciembre-2004
Mensajes: 133
Antigüedad: 19 años, 5 meses
Puntos: 0
Sorry, Myakire

Por favor, te agradeceria mucho si por favor aclaras mis ideas, por favor necesito saber que tengo que hacer estoy estancada en esto y nose que hacer...

como saber cual tengo que instanciar y cual no o uando instanciar ambos:

set fich = up.Ficheros("archivo")
o
set fich_1 = up.Ficheros("imagen")
__________________
Mina
  #12 (permalink)  
Antiguo 30/03/2006, 14:32
Avatar de ElAprendiz  
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 22 años, 3 meses
Puntos: 2
Cita:
EDITADO: Choque con ElAprendiz, lo que tardé en leer y escribir
a no fue mi culpa, no debi cruzarme , lo siento maestro


respecto al tema ya te dijeron como hacerlo
__________________
Manual de ASP Avanzado ;-)
  #13 (permalink)  
Antiguo 30/03/2006, 16:01
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Cita:
Iniciado por yesmina
Por favor, te agradeceria mucho si por favor aclaras mis ideas, por favor necesito saber que tengo que hacer estoy estancada en esto y nose que hacer...

como saber cual tengo que instanciar y cual no o uando instanciar ambos:

set fich = up.Ficheros("archivo")
o
set fich_1 = up.Ficheros("imagen")
a ver ....

ahí te va, pero creo que necesitas ponerte las pilas para que estos errores te ocupen más de lo necesario:

Cita:
For each fich in up.Ficheros.Items
Response.Write("<ul>")
Response.Write("<li>Nombre: <b>" & fich.Nombre & "</b></li>")
Response.Write("<li>Tamaño: <b>" & fich.Tamano & "</b> bytes (" & FormatNumber(fich.Tamano / (1024*1024)) & " Mb)</li>")
Response.Write("<li>Tipo de Archivo: <b>" & fich.TipoContenido & "</b></li>")
Response.Write("</ul>")
fich.Guardar vPath

connStr = "Driver={SQL Server};SERVER=10.1.1.1; DATABASE=BD;UID=Usuario;PWD=pasw"
Set adoRs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT Id_Prov, NomArchivo,Tamano,Tipo,Curriculum from Proveedores_Curriculums where Id_Prov = " & Session("IdProveedor")
adoRs.Open SQL, connStr, 2, 2
if adoRs.EOF Then
adoRs.AddNew
End if
adoRs("Id_Prov") = Session("IdProveedor")
adoRs("NomArchivo") = fich.Nombre
adoRs("Tamano") = fich.Tamano/1024
adoRs("Tipo") = fich.TipoContenido
fich.GuardarBD adoRs("Curriculum") 'Campo Image en SQL-Server
adoRs.Update
adoRs.Close
Set adoRs = Nothing

Next
No tengo tiempo de hacerlo como lo ocupas, así que copié uno de los que tengo, le borré algunas cosas para que no te confundieras y lo pegué.
Ese código recorre cada uno de los archivos que el usuario haya mandado y lo guarda en disco duro y en una tabla.

Ya me tengo que ir, pero mañana, si aún hace falta, te comento linea a linea lo que hace. Y si quieres hacemos también el que necesitas para abrir la imagen o el archivo dependiendo de lo que guardaste en el campo de "Tipo"

Saludos
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 12:05.