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

Componente AspUpload

Estas en el tema de Componente AspUpload en el foro de ASP Clásico en Foros del Web. Hola a todos, el servidor con el que trabajo tiene preintalado el componente AspUpload, y quiero valerme de ellos para subir imágenes a las bases ...
  #1 (permalink)  
Antiguo 30/06/2007, 11:58
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Componente AspUpload

Hola a todos, el servidor con el que trabajo tiene preintalado el componente AspUpload, y quiero valerme de ellos para subir imágenes a las bases de datos y como no se, me fui a la página de http://www.aspupload.com y me bajé algunos códigos para subir imagenes al servidor y me funcionó perfectamente. Pero como dije antes, ahora quiero subir mis imagenes a una base datos.

Al procesar este cóndigo, me da el error:
================================================== ======
Error de Microsoft VBScript en tiempo de ejecución error '800a01a8'

Se requiere un objeto: 'SQL'

/proyectoimagenes/upload_f.asp, línea 53
-----------------------------------------------------------------
esto es lo que hay en la linea 53:

SQL = SQL & Replace(Upload_f.Form("DESCR"), "'", "''") & "', "
================================================== ======


upload_f.asp

<%
Set Upload = Server.CreateObject("Persits.Upload.1")
' Capture files (esta es la ruta mi servidor)
count = Upload.Save ("d:\xvrt\midominio\html\proyectoimagenes")

' Obtain file object
Set File = Upload.Files("THEFILE")

If Not File Is Nothing Then
Connect = "miservidor.myimagen.mdb"

SQL = "INSERT INTO MYIMAGES(image_blob, filename, description, filesize) VALUES('"&image&"','"&filename&"','"&descripcion&" ',"&1048576&")"
SQL = SQL & File.Filename & "', '"
SQL = SQL & Replace(Upload_f.Form("DESCR"), "'", "''") & "', " SQL = SQL & File.Size & ")"

File.ToDatabase Connect, SQL
Response.Write "File saved."
Else
Response.Write "File not selected."
End If
%>

Gracias de antemano por la ayuda.
  #2 (permalink)  
Antiguo 30/06/2007, 12:12
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
Re: Componente AspUpload

yo te recomendaria que en lugar de subir la imagen a la bd subas la imagen a una carpeta y a la base de datos le pases solo la url de la imagen para que no la hagas tan pesada, digo, solo un consejo
  #3 (permalink)  
Antiguo 30/06/2007, 15:15
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: Componente AspUpload

definitivamente, me uno al comentario CONSEJO de Sjam7, es mas practico, y como te dice el, en la base solo requieres el nombre que buscaras despues


suerte
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #4 (permalink)  
Antiguo 01/07/2007, 10:40
Avatar de Cameron_2006  
Fecha de Ingreso: diciembre-2006
Mensajes: 248
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Componente AspUpload

o sea que la imagen la subo al servidor a la carpeta de imagenes y solo relleno el campo con el nombre de la imagen en la base de datos? y como hago eso? disculpen mi ignorancia... , porque subiendo solo la imegen a una carpeta especifica lo se, pero por ejemplo, tengo una página en la que el usuario publica un anuncio pero quiero darle la posibilidad de insertar una imagen, como relaciono esa imagen a ese aviso? gracias por la ayuda
  #5 (permalink)  
Antiguo 01/07/2007, 20:24
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
Re: Componente AspUpload

pues primero pones un campo de texto, y con el mismo aspupload puedes saber el nombre del archivo subido, creo que es la variable File.Filename, esa la grabas en el campo de texto al grabar el aviso, y asi ya solo al mostrar en aviso llamas a la imagen algo asi: <img src="imagenes/<%=rs("imagen")%>">
__________________
CreandoWebs.com
www.creandowebs.com
PLANTILLAS TEMPLATEMONSTER CON 10% DE DESCUENTO
  #6 (permalink)  
Antiguo 02/07/2007, 04:09
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 20 años, 5 meses
Puntos: 6
Re: Componente AspUpload

Hola,

Yo me construí una función para evitar que dos archivos tengan el mismo nombre (puede pasar), lo mejor es renombrar el archivo, la función es esta:

Código PHP:
Function GeneraNombre(Original)
  
Randomize
  Numero 
int((10000 1) * rnd 1)
  
GeneraNombre Day(Now) & Month(Now) & Year(Now) & Replace(Time,":",""_
  
Numero Right(Original4)
End Function 
La pasas antes de grabar y listo, recuerda grabar el valor en una variable, porque no puedes pasarla dos veces, ya que te generará dos nombres diferentes, es decir, si pasas la variable al grabar la imagen y otra vez al almacenar la info en la base de datos, serán diferentes.

Un saludo!
  #7 (permalink)  
Antiguo 31/08/2007, 10:28
 
Fecha de Ingreso: marzo-2007
Ubicación: Mexico
Mensajes: 99
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Componente AspUpload

HOLA AMIGOS YO TENGO EL SIGUIENTE PROBLEMA: QUIERO CARGAR TRES IMAGENES PARA ESO REALIZO LO SIGUIENTE:

Cita:
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.Save(dir)

'IMAGEN1
Set file=Upload.Files(1)
archivo1=File.fileName
ubicacion1=File.OriginalPath
tipo1=File.ImageType
'IMAGEN2
set file2=Upload.Files(2)
archivo2=File2.Filename
ubicacion2=File2.OriginalPath
tipo2=File2.ImageType
'IMAGEN3
set file3=Upload.Files(3)
archivo3=File3.Filename
ubicacion3=File3.OriginalPath
tipo3=File3.ImageType
MI PROBLEMA SE PRESENTA CUANDO SE REPITEN LAS IMAGENES, SI TENGO ALGUNA EN LA CARPETA QUE SE LLAMA imagen.jpg, ME VA GENERANDO: imagen(1).jpg, imagen(2).jpg,etc, LO QUE QUIERO ES IMPEDIR QUE DICHA IMAGEN SE REPITA, NO SE PORQUE ME LAS GENERA DE ESA MANERA, NO SE SI ME EXPLIQUE, ESPERO QUE SI, OJALA PUEDAN AYUDARME

Última edición por noraazzul; 31/08/2007 a las 10:37
  #8 (permalink)  
Antiguo 03/09/2007, 09:09
 
Fecha de Ingreso: marzo-2007
Ubicación: Mexico
Mensajes: 99
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Componente AspUpload

nadie? porfavor de verdad llevo varios dias con este error no se como resolverlo si alguien me ayudara :(
  #9 (permalink)  
Antiguo 04/09/2007, 11:24
 
Fecha de Ingreso: marzo-2007
Ubicación: Mexico
Mensajes: 99
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Componente AspUpload

Amigos mi problema es que tengo que trabajar con 3 imagenes, no es solamente una, por eso es que necesito de su valiosa ayuda, porfavorcito...:(
  #10 (permalink)  
Antiguo 05/09/2007, 04:52
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Re: Componente AspUpload

Entonces, ¿que quieres hacer con las imagenes cuyos nombres se repiten? ¿No grabarlas? ¿ponerles otro nombre? ¿lanzar un mensaje de error? ....



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #11 (permalink)  
Antiguo 07/09/2007, 09:54
 
Fecha de Ingreso: marzo-2007
Ubicación: Mexico
Mensajes: 99
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Componente AspUpload

Hola!!, los quiero borrar, con el siguiente procedimiento:

Código PHP:
set Objeto=Server.CreateObject("Scripting.FileSystemObject")
        
ubicacion="DOWNLOAD2\"&archivo1
        ubi=Server.MapPath(ubicacion)
        if Objeto.FileExists(ubi)then
          Objeto.DeleteFile ubi, True
        end if
        Objeto=nothing 
Donde archivo1 es el nombre de la imagen que esta almacenado en la base de datos, y si lo el¡imina pero en el procedimiento anterior, que es el siguiente:

Código PHP:
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.Save(dir
La imagen ya se ha guardado en la carpeta con el nombre original y un apendice; algo asi como imagen[1].gif, siendo el nombre original imagen.gif. En otras palabras en la carpeta me guarda el nombre de la imagen con los apendices que te digo y en la base de datos me guarda el nombre original de la imagen, lo que yo necesito es guardar en la carpeta solo el nombre original. Aclarando, esto sucede solo cuando se repiten las imagenes que estoy cargando, lo cual quiero evitar, mas que nada para ahorrar espacio, etc.
  #12 (permalink)  
Antiguo 07/09/2007, 15:18
 
Fecha de Ingreso: abril-2005
Ubicación: chihuahua Mexico
Mensajes: 49
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: Componente AspUpload

Yo utilizo un codigo asp y no un componente y el codigo esta abierto lo puedes mover a tu antojo http://www.freeaspupload.net/
  #13 (permalink)  
Antiguo 08/09/2007, 03:28
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 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
  #14 (permalink)  
Antiguo 05/07/2009, 10:50
 
Fecha de Ingreso: febrero-2005
Mensajes: 17
Antigüedad: 19 años, 3 meses
Puntos: 0
Sonrisa Respuesta: Componente AspUpload

Te doy un ejemplo de Upload que hice para un sitio mío....todo el mérito es de sitios como este, que ayudan a aprender.

Que hace:

* Sube todas las imagenes que quieras (en página que redirecciona a esta deberás poner cuantos files desees)
* limitando el tamaño de archivo; da mensaje de error si supera los kb--->
* verifica que cada file upload sean imágenes; si no son imagenes las borra.
* Asigno un nombre diferente al original usando un código aleatorio (El componente trae una opción para esto, pero me enteré después!)
* redimensiona a dos tamaños diferentes, manteniendo proporciones
* estampa un logo (logo.png en el servidor)
* borra la imagen original de tamaño grande
* agrega un registro a una Base Access, insertando valores. (deberás adecuarlos a tu base de datos)
* luego redirecciona a una página de salida.

Iba a pegar el link para no repetir adtos en el fotro, pero no pude por el bloqueo antspam.....ahora lo ves abajo. Saludos.-

Código PHP:
<&#37;Response.CharSet = "utf-8" %>

<% Server.ScriptTimeout 1800 %> 



<%



    
Set Upload Server.CreateObject("Persits.Upload")
    
Upload.IgnoreNoPost true 
    

set oConexion
=server.createobject ("ADODB.CONNECTION")
oConexion.open "provider=microsoft.jet.oledb.4.0;data source=" server.mappath("../bbdd/galeria.mdb")


Const 
adOpenKeyset 1
Const adLockOptimistic 3
 inicio de carga en automotores
set rscd
=createobject("ADODB.Recordset")
rscd.CursorType adOpenKeyset 
rscd
.LockType adLockOptimistic 
sqltxt1
=" SELECT * FROM fotogaleria"
rscd.Open sqltxt1oConexion




    Set Jpeg 
Server.CreateObject("Persits.Jpeg")
    
Upload.OverwriteFiles False
    Upload
.ProgressID Request.QueryString("PID")

    
Upload.SetMaxSize 15728640False

    On Error Resume Next
    n 
Upload.Save(Server.MapPath ("../galeria2009/"))

    If 
Err.Number 8 Then
   Response
.Write "No permitido. Sus imágenes deben pesar 2 MB como máximo."

    
ErrorNum Err.Number
    Descr 
Err.Description

If ErrorNum <> 0 Then
        Response
.Write "<B>Ha ocurrido un error: <FONT COLOR=""#FF0000"">" Descr "</FONT></B>Contacte al webmaster a la brevedad posible: Enrique Ogalde Cel.: (02965) 15393307"
response.end
end 
if
end if


randomize()
largo 3
For contador 1 to largo
numero 
Int(26 Rnd 97)
letra Chr(numero)
codigo codigo letra
next        
idfamilia 
upload.form("idfamilia")
idSUBfamilia upload.form("idSUBfamilia")
nombrefamilia upload.form("nombrefamilia")
nombreSUBfamilia upload.form("nombreSUBfamilia")




For 
Each File in Upload.Files
  
If File.ImageType "UNKNOWN" Then
  File
.Delete
  end 
if





   
i1 ""&codigo&"_" File.FileName


   Jpeg
.Open File.Path
   
   
   
500
if Jpeg.OriginalWidth Jpeg.OriginalHeight then
Jpeg
.Width L
Jpeg
.Height Jpeg.OriginalHeight Jpeg.OriginalWidth
Jpeg.Width 90
Jpeg.Height 90
else
Jpeg.Height L
Jpeg
.Width Jpeg.OriginalWidth Jpeg.OriginalHeight
Jpeg.Width 95
Jpeg.Height 95
end 
if
        
Jpeg.ToRGB 



Set Jpeg2 
Server.CreateObject("Persits.Jpeg")
Jpeg2.Open  Server.MapPath("logo.png"

Jpeg.Canvas.DrawImage xyJpeg20.6 , &Hffffff2

Jpeg
.Save Server.MapPath("../Galeria2009/") & "\Gr_"&codigo&"_" File.FileName
File
.Delete


150
if Jpeg.OriginalWidth Jpeg.OriginalHeight then
Jpeg
.Width L
Jpeg
.Height Jpeg.OriginalHeight Jpeg.OriginalWidth
else
Jpeg.Height L
Jpeg
.Width Jpeg.OriginalWidth Jpeg.OriginalHeight
end 
if
        
        
Jpeg.Save Server.MapPath("../Galeria2009/") & "\CH_"&codigo&"_" File.FileName


   
File
.Delete

rscd
.Addnew



rscd
("familia") = idfamilia
rscd
("SUBfamilia") =  idSUBfamilia
rscd
("NombreFotoChica")= "CH_"&i1&""
rscd("NombreFotoGrande")= "Gr_"&i1&""
rscd("descripcionfoto")= descripcion
rscd
("numerovisitas")= 1


next









rscd
.Update
rscd
.close
Set rscd 
Nothing
Set oConexion 
Nothing
oConexion 
close 

response
.Redirect("OtraPaginademisitio"%> 
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:23.