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

freeaspupload y upload.form

Estas en el tema de freeaspupload y upload.form en el foro de ASP Clásico en Foros del Web. que follon tengo con el tema de enviar datos y archivos al mismo tiempo. me daban mogollon de problemas el sustituir request por upload, no ...
  #1 (permalink)  
Antiguo 21/03/2006, 09:50
moncherote
Invitado
 
Mensajes: n/a
Puntos:
freeaspupload y upload.form

que follon tengo con el tema de enviar datos y archivos al mismo tiempo.
me daban mogollon de problemas el sustituir request por upload, no me funcionaba, por lo que decidi hacer lo siguiente:

tengo un form con campos text y file(para fotos). una vez pulsado el boton guardar me envia a una página donde inserto los datos en la BD como siempre, y un form donde introduzco los datos de los archivos con el enctype="multipart/form-data" de marras.
este form se envia automaticamente a la pagina que sube archivos, y que tiene este codigo (+ o -):

Código:
<% 
option explicit
Response.Expires = -1
Server.ScriptTimeout = 600

%>
<!-- #include file="freeaspupload.asp" -->
<%
' ****************************************************
' Cambiar el valor de la siguiente variable
' para indicar el directorio de destino.
' El directorio indicado debe tener permisos de escritura
' de caso contrario el script fallará mostrando un error.
  Dim uploadsDirVar
  uploadsDirVar = Server.MapPath("../imagenes/")
' ****************************************************

function SaveFiles
    Dim Upload, fileName, fileSize, ks, i, fileKey, resumen
    Set Upload = New FreeASPUpload
    Upload.Save(uploadsDirVar)
	' If something fails inside the script, but the exception is handled
	If Err.Number <> 0 then Exit function
    SaveFiles = ""
    ks = Upload.UploadedFiles.keys
    if (UBound(ks) <> -1) then
		resumen = "<B>Archivos subidos:</B> "
        for each fileKey in Upload.UploadedFiles.keys
			resumen = resumen & Upload.UploadedFiles(fileKey).FileName & " (" & Upload.UploadedFiles(fileKey).Length & "B) "
        next
    else
		resumen = "El nombre del archivo especificado en el formulario no es válido en el sistema."
    end if
	'comentar la siguiente linea si no se desea mostrar el resumen
	SaveFiles = resumen
end function
%>

<%
'solo llamo al UPLOAD si hay envio de formulario
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
	'Hace el upload de los archivos enviados y muestra el resumen	
	response.write SaveFiles()
	
end if
%>
</p>
<input name="volver" type="button" id="volver" value="Volver" onClick="location.href=index.asp'">
y siempre me sale con el tema de que "El nombre del archivo especificado en el formulario no es válido en el sistema."

y es que no se como comprobar si llegan o no los datos, pues con upload.form("variable") me dice que ta definida la variable, y si la defino, no muestra nada, y el request.form tampoco, y mecaguenlalecheyaaaa!!!!


Alguna idea??
  #2 (permalink)  
Antiguo 22/03/2006, 05:09
moncherote
Invitado
 
Mensajes: n/a
Puntos:
nadie???

este es el codigo del form:

Código:
<form name="frmSend" method="POST" enctype="multipart/form-data" action="upload.asp">
<input type="hidden" name="aplano" value="<%=aplano%>">
<input type="hidden" name="afoto01" value="<%=afoto01%>">
<input type="hidden" name="afoto02" value="<%=afoto02%>">
<input type="hidden" name="afoto03" value="<%=afoto03%>">
<input type="hidden" name="afoto04" value="<%=afoto04%>">
<input type="hidden" name="afoto05" value="<%=afoto05%>">
<input type="hidden" name="afoto06" value="<%=afoto06%>">
<input type="hidden" name="afoto07" value="<%=afoto07%>">
<input type="hidden" name="afoto08" value="<%=afoto08%>">
<input type="hidden" name="afoto09" value="<%=afoto09%>">
<input type="hidden" name="afoto10" value="<%=afoto10%>">
<input type="hidden" name="afoto11" value="<%=afoto11%>">
<input type="hidden" name="afoto12" value="<%=afoto12%>">
</form> 
<script language="JavaScript">
	document.forms["frmSend"].submit()
</script>
y en la página upload.asp lo que puse arriba.

Como puedo saber si me llegan los datos a esta página????
  #3 (permalink)  
Antiguo 23/03/2006, 03:30
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Yo también uso el freeaspupload para subir archivos, al mismo tiempo que creo registros en la base de datos.

No sé si entiendo bien tu pregunta pero:
- para recoger datos de un formulario normal con el método POST es,
Request.Form("nombreCampo")

En cambio, con las funciones ó clases empleadas en el código del freeaspupload para subir archivos se sustituye el Request por la clase ó función que realiza la subida, Upload; entonces para recoger datos del formulario hay que poner,
Upload.Form("nombreCampo")

No sé si era eso lo que preguntabas,........

Saludos,

zacktagnan.
====================================
  #4 (permalink)  
Antiguo 23/03/2006, 03:38
moncherote
Invitado
 
Mensajes: n/a
Puntos:
eso ya...

si eso ya lo probé, pero no me funciona.

en mi primer mensaje he puesto el codigo de la página upload, que recibe de otra un form (el del segundo mensaje).

no se si tu lo puedes probar, pero siempre me da el error: "El nombre del archivo especificado en el formulario no es válido en el sistema."
, y no se si es porque no llegan datos o porque es.

si en la pagina upload, donde pongo el response.write SaveFiles()
pongo un upload.form("aplano"), me dice que no esta declarada la variable y no me rula (y tampoco el request, claro)

mexplicao
  #5 (permalink)  
Antiguo 23/03/2006, 05:31
moncherote
Invitado
 
Mensajes: n/a
Puntos:
Pregunta ya se algo

.. ya se que los datos me llegan bien, ahora tengo que saber porque no me sube los archivos.

En un primer momento crei en problemas de permisos, pero la carpeta tiene permisos de escritura. estoy trabajando contra un servidor local, y en el iis esta carpeta tiene permisos de escritura.

Que puede estar mal???
  #6 (permalink)  
Antiguo 23/03/2006, 06:38
moncherote
Invitado
 
Mensajes: n/a
Puntos:
puto campo file

esto es una caca!!!!! resulta que el problema es el campo file, que yo lo tengo como hidden(o text) y no me funciona.

y a un campo file no se le puede asignar un valor mediante asp!

o si???
  #7 (permalink)  
Antiguo 23/03/2006, 07:19
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Yo la verdad es que hago todo a través de un mismo archivo. Y tu divides la tarea en dos pasos, ¿no?

En algún momento, intenté dividir también todo en dos pasos, y creo que me pasaba igualmente que no terminaban de llegar los datos...

Lo que no sé es por qué divides todo en dos pasos y no lo haces todo a través de un mismo formulario.

Puede que ya lo hayas puesto pero como no tengo mucho tiempo para detalles, no me he puesto a mirar todo.

Saludos,

zacktagnan.
=======================================
  #8 (permalink)  
Antiguo 23/03/2006, 09:47
moncherote
Invitado
 
Mensajes: n/a
Puntos:
Desacuerdo ...



pos es que en un solo paso me da muchos problemas guardar datos y ficheros.

por eso he hecho dos pasos, uno que guarda los datos y mete las rutas de los ficheros en un form nuevo. y otro que recibe este form y teoricamente sube los ficheros al servidor.

existe algun otro componente para subir ficheros que me sirva para este caso????
o existe forma de asignar un valor mediante código a un input de tipo file?????
  #9 (permalink)  
Antiguo 24/03/2006, 05:28
moncherote
Invitado
 
Mensajes: n/a
Puntos:
Pregunta cambio de estrategia

ahora ya no se si necesito asp, javascript o que!!!

necesito saber si a un campo de tipo file se le puede asignar el valor de una variable!!! es posible????

PD : si esto no es ya de aqui, que me cambie de foro algun moderador, plis
  #10 (permalink)  
Antiguo 24/03/2006, 12:12
moncherote
Invitado
 
Mensajes: n/a
Puntos:
Desacuerdo esto ya es un monólogo...

pues no va y dice el W3C
que no se puede por no se que historias de seguridad. o no pone eso???

alguien sabe si esto sirve para algo??? es que mi ingles es muy malo...(como el de buenafuente)

ya no que como resolver esto!!!!!
  #11 (permalink)  
Antiguo 25/03/2006, 09:19
 
Fecha de Ingreso: marzo-2006
Mensajes: 61
Antigüedad: 18 años, 1 mes
Puntos: 0
Moncherote no te desesperes. Yo pasé por lo mismo cuando quise matar dos pájaros de un tiro. La verdad es que di tantas vueltas que parecía un perro queriendo morderse la cola. Al final decidí hacer dos formularios: uno principal (textos, campos) y otro secundario ligado al primero (archivos), y me funciona muy bien con una breve explicación al cliente. Antes usaba el freeaspload como tú, pero era un poquitín complicado, ahora uso xelupload, que es más simple pero más efectivo (para archivos menores a 1 MB) y puedo elevar múltiples archivos al mismo tiempo de manera fácil y transparente (ni siquiera me pide el path físico). Pruébalo y me avisas.
Me has animado a volver a las andadas, a ver si puedo lograr resolver la cuadratura del círculo. Si encuentro algo, te aviso.
  #12 (permalink)  
Antiguo 25/03/2006, 09:21
 
Fecha de Ingreso: marzo-2006
Mensajes: 61
Antigüedad: 18 años, 1 mes
Puntos: 0
Ah... y no es un monólogo, lo que creo que pasa es que nadie tiene una solución por ahora. ¿Me equivoco?
  #13 (permalink)  
Antiguo 27/03/2006, 05:12
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
Yo reitero que upload.asp de freeaspupload puede subirte las imágenes y crearte nuevos registros en la tabla deseada de la base de datos. Y todo de una vez. Claro está, hay que conectarse a la base de datos, poner las órdenes de INSERT...

Yo estoy ahora programando una web en la cuál utilizo el freeaspupload. En uno de los formularios dónde lo uso, además de crear el nuevo registro, tengo la opción de subir hasta 6 imágenes (algo que se podría cambiar si se desean más imágnes)

Al freeaspupload además, ó al archivo upload.asp se le pueden agregar código propio, es decir, otras tareas.
Yo, por ejemplo, según el texto de uno de los campos del formulario termino renombrando las imágenes que se suban.

Pues eso.

Saludos,

zacktagnan.
==============================================
  #14 (permalink)  
Antiguo 27/03/2006, 08:49
Avatar de fario13  
Fecha de Ingreso: junio-2004
Ubicación: Entre Madrid y Logroño
Mensajes: 411
Antigüedad: 19 años, 10 meses
Puntos: 7
Yo estoy o quiero hacer algo parecido. Quiero grabar un registro en una tabla de la BD y al mismo tiempo subir una imagen. Eso mas o menos se como hacerlo, pero me pregunto como posteriormente puedo recuperar y visualizar la informacion del registro (eso es facil) y a la vez saber que imagen vinculada a ese registro tengo que visualizar. Es decir, en la tabla no se guarda ni el nombre de la imagen ni su path; luego como poder saber cual es la que tiene ese registro relacionada?

Un saludo
__________________
Bodegas La Rioja
  #15 (permalink)  
Antiguo 27/03/2006, 10:03
moncherote
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo gracias

gracias por los animos, niles, y gracias a todos por responder.

he estado estos dias indagando por internet(hasta en inglés), y he aprendido algo sobre los campos tipo file.

al parecer el w3c dejo abierta la posibilidad de que se pudiese usar la propiedad value de estos campos para asignarles valores mediante variables o como valores por defecto, pero los navegadores prefirieron evitarse un posible problema de seguridad y cerraron el grifo. maldito el dia

por lo que veo, tengo dos posibilidades :

1ª - probar el codigo de uk.builder.com que puse en mi anterior post, que a lo mejor funciona y me abre el grifo

2ª - romperme los cuernos para integrar subida de datos y ficheros en la misma página. (para algunos esta puede ser la solucion ideal, pero a mi me toca los webs tener que modificar todo el código.. y que me funcione, claro)

zacktagnan, nos podrias poner un código completito para ver como lo haces tú???

gracias
  #16 (permalink)  
Antiguo 28/03/2006, 01:58
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
El código es bastante larguito como para ponerlo.

Si me pasas tu correo te podría mandar unos ficheros programados para que pruebes y los adaptes luego como quieras

Saludos,

zacktagnan.
================================================== ==
  #17 (permalink)  
Antiguo 10/04/2006, 11:58
Avatar de GaboMaKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Viña del Mar - Chile
Mensajes: 323
Antigüedad: 21 años, 5 meses
Puntos: 2
Cita:
Iniciado por zacktagnan

Al freeaspupload además, ó al archivo upload.asp se le pueden agregar código propio, es decir, otras tareas.
Yo, por ejemplo, según el texto de uno de los campos del formulario termino renombrando las imágenes que se suban.

Pues eso.

Saludos,

zacktagnan.
==============================================
Zacktagnan como hiciste lo último que mencionas, de renombrar los archivos, he tratado y no puedo ..... te agradecería tu ayuda...
__________________
Exito!!
:censura:
Visita Uganet.cl
  #18 (permalink)  
Antiguo 11/04/2006, 05:55
Avatar de zacktagnan  
Fecha de Ingreso: abril-2005
Mensajes: 501
Antigüedad: 19 años
Puntos: 3
A ver si comprendes esto. Sino como le dije a moncherote, si me pasas un email, te mando una prueba para que lo veas con más detenimiento

Ahí va el mazacote de código que va dentro de un archivo que tengo para insertar datos. Se suben dos imágenes para el nuevo registro que se indican dentro de campos de imagen del formulario llamados [promo_port] y [promo_pgral]. Él nuevo nombre de las imágenes subidas, siempre que se haya insertado algo, se construye entre otras cosas con lo insertado en otro campo de texto del formulario llamado [promo_inic]:


for each fileKey in Upload.UploadedFiles.keys
' ESPECIFICANDO TAMAÑO DE CADA ARCHIVO SUBIDO - EN bytes Ó KB
Dim tamanioArchivoSubido
tamanioArchivoSubido = Upload.UploadedFiles(fileKey).Length 'LLEGA EN bytes
IF (tamanioArchivoSubido > 1024) THEN
tamanioArchivoSubido = tamanioArchivoSubido / 1024
tamanioArchivoSubido = formatnumber(tamanioArchivoSubido,2) 'DOS DECIMALES
tamanioArchivoSubido = tamanioArchivoSubido & " KB"
ELSE
tamanioArchivoSubido = tamanioArchivoSubido & " bytes"
END IF
' FIN DE ESPECIFICANDO TAMAÑO DE CADA ARCHIVO SUBIDO - EN bytes Ó KB

'CADA NOMBRE-DE-ARCHIVO-SUBIDO, nomArchivo.ext, SE SEPARA ESTE EN DOS PARTES
'LA PARTE DEL NOMBRE Y LA PARTE DEL PTO-EXTENSIÓN
nomArchivoSubido = Upload.UploadedFiles(fileKey).FileName
parteNom = Left(nomArchivoSubido, InStr(nomArchivoSubido, ".")-1)
ptoExt = Right(nomArchivoSubido, Len(nomArchivoSubido)-(InStrRev(nomArchivoSubido, ".")-1))

'SI EL CAMPO DE SUBIDA INCLUYE UN ARCHIVO, ES DECIR, NO ESTÁ VACÍO...
IF (Len(nomArchivoSubido) > 0) THEN

'SI UNO DE LOS NOMBRE DE LOS CAMPOS DE ARCHIVO TIENE UNA LETRA MAYÚSCULA,
' COMO promo_pGral, LA LÍNEA Call Fich_RENOM.Copy(...) FALLA
NombreAnterior = nomArchivoSubido
If (fileKey = "promo_port") Then' imagen para la Portada
NombreNuevo = Upload.Form("promo_inic") & "_portada" & ptoExt
vpromo_port = NombreNuevo
ElseIf (fileKey = "promo_pgral") Then' imagen para el Plano
NombreNuevo = Upload.Form("promo_inic") & "_planGral" & ptoExt
vpromo_pgral = NombreNuevo
End If

if (Upload.Form("promo_tiprom") <> "2") then''>>MÁS IMGS SI Suelta ó 2ªMano
If (fileKey = "promo_img1") Then' imagen para la Imagen 1
NombreNuevo = Upload.Form("promo_inic") & "_1" & ptoExt
vpromo_img1 = NombreNuevo
ElseIf (fileKey = "promo_img2") Then' imagen para la Imagen 2
NombreNuevo = Upload.Form("promo_inic") & "_2" & ptoExt
vpromo_img2 = NombreNuevo
ElseIf (fileKey = "promo_img3") Then' imagen para la Imagen 3
NombreNuevo = Upload.Form("promo_inic") & "_3" & ptoExt
vpromo_img3 = NombreNuevo
ElseIf (fileKey = "promo_img4") Then' imagen para la Imagen 4
NombreNuevo = Upload.Form("promo_inic") & "_4" & ptoExt
vpromo_img4 = NombreNuevo
End If
end if''>>FIN DE - MÁS IMGS SI Suelta ó 2ªMano

Set FSO_RENOM = Server.CreateObject("Scripting.FileSystemObject")
Set Fich_RENOM = FSO_RENOM.GetFile(Server.MapPath("..\imags\promosV iv\" & NombreAnterior))
Call Fich_RENOM.Copy(Server.MapPath("..\imags\promosViv \" & NombreNuevo))

Set Ruta_y_Nom = FSO_RENOM.GetFile(Server.MapPath("..\imags\promosV iv\" & NombreNuevo))
rutaBarra = "\"
if InStr(Ruta_y_Nom, rutaBarra) = 0 then rutaBarra = "/"
nomArchivoSubido = Right(Ruta_y_Nom, Len(Ruta_y_Nom)-InStrRev(Ruta_y_Nom, rutaBarra))

Call Fich_RENOM.Delete()
Set Fich_RENOM = Nothing
Set FSO_RENOM = Nothing
Set Ruta_y_Nom = Nothing
Set Ruta_y_Nom = Nothing

iNum = iNum + 1
END IF

GuardArchivos = GuardArchivos & nomArchivoSubido & " ["&parteNom & ptoExt&"] " & " (" & tamanioArchivoSubido & ");<br />"
next


A ver si te sale algo...

Saludos,

zacktagnan.
===========================================
  #19 (permalink)  
Antiguo 21/11/2006, 13:24
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 972
Antigüedad: 19 años, 11 meses
Puntos: 2
podrían darme una manito con esto?, necesito obtener los datos enviados por post antes de subir el archivo, si hago lo siguiente:

for each fileKey in Upload.UploadedFiles.keys
nombreNuevo=Upload.form("dato")
next

primero sube el archivo y despues obtengo los datos:
pero yo necesito tomar los datos antes de subir el archivo, porque "dato" va a ser un prefijo del nombre de archivo.

Lo que quiero hacer es tomar ese valor y en la funcion SAVE pasarlo como parámetro para que en la clase freeaspupload.asp pueda renombrarlo de esta manera:

Public Sub Save(path,prefijo)
......

fileItem.FileName=prefijo&fileItem.FileName
....
end sub

Se entiende?

Muchas gracias desde ya.
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 20:17.