Ver Mensaje Individual
  #13 (permalink)  
Antiguo 08/09/2007, 03:28
tammander
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: Componente AspUpload

A ver si me aclaro. Supongo que la estructura de la tabla donde almacenas los datos de las fotos es algo como esto:

Cita:
idImagen -- Long -- autonumerico -- Clave -- Unico ------> Id. del la imagen
idFK ------ Long -- Clave Externa ---------------------> relacion 1 - varios con otra tabla
FileName -- String -----------------------------------> Nombre de la imagen
size ------ Double ----------------------------------> Tamaño en Bytes de la imagen
descripcion -- Text ----------------------------------> Informacion extra
Yo te recomiendo que siempre cambies el nombre de la imagen antes de guardarla, identificandola con su clave externa (que puede ser el identificador del cliente que sube la imagen)

Por ejemplo. Ha entrado un usuario que va a subir 2 imágenes a su anuncio donde ya existia una. Digamos que el usuario esta identificado como UserID=25

En la tabla anterior ya tenemos hecha una inserción anterior:


Código:
 dim dir
dir=Server.MapPath("DOWNLOAD2")
Set Upload=Server.CreateObject("Persits.Upload.1")
Upload.OverwriteFiles=False

On Error Resume Next
Upload.SetMaxSize 1048576 'Limitado a 1MB
Count = Upload.SaveToMemory

' Posicion de la imagen
i = 1
' nombre que le vamos a poner
nombre = "img_" & UserID & "_"
' path donde se va a guardar la imagen
path = "c:\inetpub\wwwroot\misitio\images\usuarios\"

' Buscamos en la bd el ultimo registro del usuario UserID si lo hubiera
' (se supone que ya esta abierta la conexion)
set rsCheck = conn.execute("SELECT FileName From tablaimagen WHERE idFK=" & UserID & " ORDER BY FileName DESC")
if not rsCheck.EOF
        pri = instrrev(rsCheck("FileName"),".")
        sec = instrrev(rsCheck("FileName"),"_")
        res = mid(rsCheck("FileName"),sec+1,pri-sec)
        if isNumeric(res) then
                 res = res + 1
        else
                 res = i
        end if
else
      res = i
end if

rsCheck.close
set rsCheck = nothing

For Each File in Upload.Files 
       nombreFinal = nombre & res & mid(File.Path,instrrev(File.Path,"."))
      ' aqui lo graba
      File.SaveAs(path & nombreFinal)
      res = res + 1
next
Es una propuesta, desde luego. Sin embargo, no me gusta usar componentes que no son mios o que no dispongo del codigo fuente ya que dependes de terceros. Yo usaria el código que te dice birkin72 pero se lo que es cambiar código ya hecho

Una cosa. No se si File.Path contiene el nombre original de la imagen. Chequealo (principalmente por que lo uso para sacar el tipo de imagen). Tambien puedes usar la propiedad ImageType para componer el nombre:

nombreFinal = nombre & res & "." & lcase(File.ImageType)

dependerá de ti :)

Aqui tienes la referencia del objeto.


Espero que te haya sido util.

Una cosa más: No he puesto la inserción de los datos en la BD, pero ya es solo un simple insert dentro del bucle for ... next


insert into tablaimagen values ('',id, UserID, nombreFinal, File.Size, Upload.Form("DESC_"&File.Name))


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -

Última edición por tammander; 08/09/2007 a las 03:38