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

Eliminar fotos de una carpeta

Estas en el tema de Eliminar fotos de una carpeta en el foro de ASP Clásico en Foros del Web. Buenas, tengo una carpeta con más de 2000 fotografias subidas por usuarios, el problema es que puse un formulario para que los usuarios pudieran poner ...
  #1 (permalink)  
Antiguo 23/10/2004, 17:32
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 20 años, 6 meses
Puntos: 1
Eliminar fotos de una carpeta

Buenas, tengo una carpeta con más de 2000 fotografias subidas por usuarios, el problema es que puse un formulario para que los usuarios pudieran poner anuncios y subir una foto. Pero cuando se eliminaba el anuncio no se eliminaba la foto correspondiente.

Lo que ha sucedido es obvio, hay unos 800 registros en la base de datos, pero casi 3000 fotografias.

Necesito poder eliminar todas las fotos que no estan vinculadas a un registro.

El código que se me ha ocurrido es este:


<%

dir="/WWW/images/anuncios/" 'carpeta con las fotos
Set Mi_directorio=Server.CreateObject("Scripting.FileS ystemObject")
Set mis_archivos=Mi_directorio.GetFolder(Server.MapPat h(dir))
cont=1
For Each archivo_encontrado In mis_archivos.files
cont=cont
foto_eliminar= dir&archivo_encontrado.Name ' La ruta más el nombre de la foto

if cont < 100 then ' Cuento hata 300 fotos para que el bucle no genere un cuelgue en el ordenador

sql = "SELECT thumbnail, image1 from anuncios WHERE (thumbnail = "&foto_eliminar&" or image1 = "&foto_eliminar&" " ' Como de cada foto generaba un thumbnail y la propia foto, reviso ambos campos.

on error resume next
set rs = cn.Execute(sql)
While not rs.EOF
foto2 = rs("thumbnail")
foto3 = rs("image1")
if foto_eliminar <> foto2 or foto_eliminar <> foto3 then
fotoOK=1
else
fotoOK = 0
end if
rs.MoveNext
Wend
rs.Close
Set rs = Nothing

If fotoOK = 1 then

foto_eliminar.Delete
end if
end if
cont=cont+1
response.Write("<br>")
Next

%>

Pero el ordenador se queda totalmente "tostao" ¿Alguna sugerencia?
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #2 (permalink)  
Antiguo 23/10/2004, 20:53
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 21 años
Puntos: 5
hola... lo que debiste hacer al principio es en el form que utilizan los usuarios guardar y renombrar el archivo de la imágen con el codigo del registro.

ejemplo:

id_registro = 100
nombre_imagen = "foto.jpg"

lo renombras utilizando un replace() (teniendo el id del registro y la extencion de la imagen) y luego renombras la imagen:

nombre_imagen = "100.jpg"

y de esta forma nunca el usuario podrá crar archivos temporales o con otros nombres dentro del server y es mas facil a la hora de actualizar, eliminar o seleccionar....

esto por el momento...



lo de eliminar las imagenes debes utiliar el FSO (file system object) y hacer un while como el que tienes e ir comparando archivo por archivo segun los registros que tengas

espero haver ayudado en algo....
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #3 (permalink)  
Antiguo 24/10/2004, 07:08
 
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 353
Antigüedad: 20 años, 6 meses
Puntos: 1
Gracias Saruman, la idea de renombrar las imágenes con el id autonumérico del registro simplemente me parece GENIAL, jamás se me hubiera ocurrido y efectivamente, para el tratamiento posterior de las imágenes se facilita la labor. Me voy a poner con ello ahora mismo.

Para eliminar las fotos estoy utilizando el FSO, pero son tantas imágenes y tantos registros que se me queda colgado, solo se me ha ocurrido hacer un "barrido" por todas las imágenes, una a una y de cada una hacer a su vez otro "barrido" en la base de datos para revisar que ese fichero no se encuentra entre los registros, para poder eliminarlo.. me temo que de no encontrar una solución, me veo eliminando una a una, el código que utilizo me deja totalmente "tostao" al ordenador...
__________________
Lo menos frecuente en este mundo es vivir. La mayoría de la gente existe, eso es todo...
  #4 (permalink)  
Antiguo 24/10/2004, 11:37
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 21 años
Puntos: 5
ok, me comentas como te fue
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
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 17:09.