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

Ayuda con el asp upload

Estas en el tema de Ayuda con el asp upload en el foro de ASP Clásico en Foros del Web. Hola amigos, estoy con una cosilla pero no doy con ella, a ver si me podeis ayudar. Utilizo en una de mis paginas asp el ...
  #1 (permalink)  
Antiguo 07/07/2003, 08:39
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años, 2 meses
Puntos: 9
Ayuda con el asp upload

Hola amigos, estoy con una cosilla pero no doy con ella, a ver si me podeis ayudar.
Utilizo en una de mis paginas asp el componente de Persits para hacer upload Persist Upload 1.

El caso es que funciona bien, los que visitan mi página envian imagenes a una carpeta del servidor y llegan
bien.

Lo que estoy intentando conseguir es que justo antes de que pulsen el botón de enviar la fotografía
cambiar el nombre de archivo de la foto por el nombre de las variables session que
tengo creados con su nombre.

En mi web, todos los usuarios se identifican con session("nombre") y session("apellidos").

Es ahí donde me gustaría conseguir una rutina o algunas líneas que REEMPLAZARA el nombre del archivo
que me envian por el nombre de las sesiones y se quedara este último grabado.

uuujjjjj, no se si me habré explicado bien.De todas formas, ahí va el código que utilizo para que me suban
las fotos.

<%
a=request.querystring("a")
if a=1 then


Set Upload = Server.CreateObject("Persits.Upload.1")
' Upload.SetMaxSize 50000, false

Upload.Save("d:\xvrt\misitio.com\upload\fotos")

For Each File in Upload.Files
If File.Size > 5000 then
response.write "Por favor, selecciona un archivo que sea inferior a 5000 bytes (5KB)"
File.Delete
Response.End
Exit For
End If
Next

For Each File in Upload.Files
If File.ImageType <> "GIF" and File.ImageType <> "JPG" Then
Response.Write "Por favor, solo archivos GIF o JPG"
File.Delete
Response.End
Exit For
End If
Next


Upload.OverwriteFiles = false
response.redirect("confirmacion_foto.asp")
'else
end if
%>

Gracias de antemano
__________________

***Aprendiz de todo y maestro de nada***
  #2 (permalink)  
Antiguo 08/07/2003, 03:44
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 23 años, 3 meses
Puntos: 2
En una de mis paginas los usuarios pueden subir muchas imagenes, y como corria el riesgo de que algunas se llamaran igual lo que hago es que al subirlas les cambio el nombre por uno que genero de manera aleatrio y asi se que no estara repetido el nombre. A continuacion te pongo resumido lo que hago.

Suponiendo que el campo del formulario de llama archivoGrafico:

Código:
<%

   Set Upload = Server.CreateObject("Persits.Upload.1")
   Count = Upload.Save(server.mapPath("/datos"))

   For Each File in Upload.Files  
      if (File.Name = "archivoGrafico") then   
   	  archivoGrafico = nombreAleatorio(File.FileName)	   
	  call renombraArchivo("/datos/"&File.FileName,"/datos/"&archivoGrafico)	   
      end if
   Next 

%>
Y las funciones a las que llamo son:

Código:
<%
	'Esta funcion simplemnte cambia el nombre del archivo de 
	'origen por el nombre destino que le hayas pasado
	function renombraArchivo(origen,destino)

		Dim fso

		Set fso = CreateObject("Scripting.FileSystemObject")

		rutaOrigen = Server.MapPath(origen)
		rutaDestino = Server.MapPath(destino)		

		fso.MoveFile rutaOrigen, rutaDestino

		Set fso = Nothing

	end function


	'Esta funcion te devyulve un nombre de archivo aleatorio 
	'(un numero enorme) que tiene la extension del que le pasaste
	function nombreAleatorio(archivoOriginal)

		Randomize
		Variable = int((5000 - 1 + 1) * rnd + 1)

		vectorArchivo = Split(archivoOriginal,".")
		extension = vectorArchivo(ubound(vectorArchivo))
		
		nombreAleatorio = Year(Now()) & Month(Now()) & Day(Now()) 
		nombreAleatorio = nombreAleatorio & Hour(Now()) & Minute(Now()) 		
		nombreAleatorio = nombreAleatorio & Second(Now()) & "_" 		
		nombreAleatorio = nombreAleatorio & Variable & "." & extension

	end function
%>

Supongo que en tu caso la funcion nombreAleatorio podria ser algo como:


Código:
<%


	function nombreAleatorio(archivoOriginal)


		vectorArchivo = Split(archivoOriginal,".")
		extension = vectorArchivo(ubound(vectorArchivo))
		
		nombreAleatorio =  Session("nombreUsuario") 
		nombreAleatorio =  nombreAleatorio & Session("apellidoUsuario") 
		nombreAleatorio =  nombreAleatorio & "." & extension
		
	end function
%>
Espero que te sirva de algo...




ToKaTa.


P.D.1: MIra que he puesto muchas asignaciones que podrian haberse puesto en una solo linea, es solo para no descuadrar las tablas del foro, que lo acabo de previsulizar y se iban las lineas a tomar por saco....


P.D.2: POr si te preguntas por que uso:
extension = vectorArchivo(ubound(vectorArchivo))
en vez de:
extension = vectorArchivo(1)

Es solo por evitar un posible bug por si algun capullin de sube algo como:
miArchivo.pif.jpg
o algo por el estilo
  #3 (permalink)  
Antiguo 08/07/2003, 05:19
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años, 2 meses
Puntos: 9
Hola Tokata, se trata de un ejemplo bastante completo.

Como mis conocimientos con el VB son básicos deje que estudie este código.

Luego te digo.

Muchas gracias por tu esfuerzo en contestar, de veras.
__________________

***Aprendiz de todo y maestro de nada***
  #4 (permalink)  
Antiguo 08/07/2003, 10:43
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años, 2 meses
Puntos: 9
Hola de nuevo.

mira, soy cortito con el asp, pero en cuanto al tema de evitar duplicidad de fotos en el mismo directorio, el componente aspUpload de Persist Software lo arregla con la siguiente línea

Upload.OverWriteFiles = False

Lo que me gustaría conseguir es agarrar el nombre del archivo que se sube sin tantas funciones que me pones y cambiarlo por los valores de session("nombre") y session("apellidos").

En la documentación del aspUpload de persist me indican que para pintar el nombre del archivo que se sube escriba

Código:
response.write File.FileName
mientras que para extraerlo es
Código:
 response.write File.ExtractFileName
indicando la documentación que se trata de SOLO LECTURA.

había pensado en hacer algo como....

Código:
For Each File in Upload.Files
ExtraerArchivo = File.ExtractFileName
'o bien ExtraerArchivo = File.FileName
ExtraerArchivo = Session("nombre")
Exit For


La verdad es que ando en este aspecto superperdido, si alguien tiene alguna idea, será bienvenida.

Gracias de antemano
__________________

***Aprendiz de todo y maestro de nada***
  #5 (permalink)  
Antiguo 09/07/2003, 09:36
 
Fecha de Ingreso: marzo-2001
Ubicación: Gran Canaria
Mensajes: 381
Antigüedad: 23 años, 3 meses
Puntos: 2
hola de nuevo epa2!


Cita:
el componente aspUpload de Persist Software lo arregla con la siguiente línea

Upload.OverWriteFiles = False
el problema con ese metodo es que la imagen no se sube si esta repetida. Yo quiero que siempre se suba, siempre, por lo que me he de asegurar por mi mismo que nunca habra imagenes repetidas, y eso lo hago generando yo los nonmbres de los archivos.


Por otro lado, el metodo que has pensado probar:

Cita:
For Each File in Upload.Files
ExtraerArchivo = File.ExtractFileName
'o bien ExtraerArchivo = File.FileName
ExtraerArchivo = Session("nombre")
Exit For
No creo que te funcione, por que lo unico que estas haciendo es asignar a una variable (ExtraerArchivo) primero un valor y luego otro, no estas trabajando con el archivo relamente (ni con su nombre).


No se, yo la unica forma que encontre de solucionar mi probelma (parecido al tuyo en el sentido de que se trata de cambiar el nombre del archivo que se sube) es esa que te puse. Realmente no tiene ninguna ciencia el codigo, si necesitas ayuda para entenderlo avisa y miro como meterle muchos mas comentarios para aclararlo....


ToKaTa.



P.D.1: Juraria que la propiedad "File.ExtractFileName" es la version obsoleta de la propiedad (File.FileName), o sea, que es lo mismo...

P.D.2: Cuando digo que la imagen no se sube no quiero decir que realmente no se suba, si que se sube, pero despues, si va a sobreescribir a otra se borra, o sea, como si no se subiera

Última edición por ToKaTa; 09/07/2003 a las 09:38
  #6 (permalink)  
Antiguo 09/07/2003, 10:28
Avatar de epa2  
Fecha de Ingreso: abril-2002
Ubicación: Málaga
Mensajes: 1.475
Antigüedad: 22 años, 2 meses
Puntos: 9
Gracias Tokata por ofrecerme tu ayuda

lo tengo presente en este asunto.

nos vemos.
__________________

***Aprendiz de todo y maestro de nada***
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 19:21.