Comprovar si existe el archivo en el servidor

05/12/2003 - 19:02 por Xus | Informe spam
Cuando haceis un upload, como comprovais que no exista un archivo con el
mismo nombre?

(y evitar así sobreescrituras)


Saludos y gracias.

Preguntas similare

Leer las respuestas

#1 oscar
05/12/2003 - 19:38 | Informe spam
yo uso el aspupload que es un componente que permite
saber si el archivo existe además de hacer uploads.

a través de unos parametros puedes sobreescribirlo
o llamarlo igual seguido de un numero, en caso de que
exista.


Cuando haceis un upload, como comprovais que no exista


un archivo con el
mismo nombre?

(y evitar así sobreescrituras)


Saludos y gracias.


.

Respuesta Responder a este mensaje
#2 Xus
07/12/2003 - 11:14 | Informe spam
Gracias, pero ahora ya he sufrido mucho peleandome con smartupload ;)


"oscar" ha escrit en el missatge dels
grups de discussió:00c701c3bb5f$0bf3f350$
yo uso el aspupload que es un componente que permite
saber si el archivo existe además de hacer uploads.

a través de unos parametros puedes sobreescribirlo
o llamarlo igual seguido de un numero, en caso de que
exista.


Cuando haceis un upload, como comprovais que no exista


un archivo con el
mismo nombre?

(y evitar así sobreescrituras)


Saludos y gracias.


.

Respuesta Responder a este mensaje
#3 danicastillo
07/12/2003 - 11:26 | Informe spam
Enas Xus

bueno podrias hacerlo con filesystemobject y fileexist
Dim objFileSystem
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
if objFileSystem.FileExists(Server.MapPath("ficheroconsupathrelativo"))
...
else
...
end if

de todas formas supongo que cuando subes un archivo al server, lo apuntas en
una tabla de la bbdd ¿no?, si es asi puedes directamente guardar el archivo
con
nombretabla\idautonumericodelabbdd+nombredelarchivo

asi nunca sobreescribiras (a no ser q machaques un registro de la bbdd)

esa es una opcion
la otra , es "ir probando" nombres

algo como
set fso=CreateObject("Scripting.FileSystemObject")
c="\upload\" ' nombre de la carpeta
f= "nombredelfichero" ' pasado por el aspsmartupload
forigen=f ' copia
k=0
do while fso.FileExists(Server.MapPath(c+f))
k=k+1
f=k+forigen
loop
' va añadiendo numeros hasta q encuentra un "hueco"
fso.close
set fso=nothing
' en f tenemos el nombre final

es algo "lento" y para muchos archivos de igual nombre quiza en lugar de
secuencial la k, convendria ponerla aleatoria, en lugar de k=k+1 un
k=int(rnd*10000) por ejemplo (con un randomize antes del bucle claro) ,
pero vamos en un sistema real no suelen existir muchos archivos con el mismo
nombre =)


-o|o|--
-o|o| dani castillo
-o|o| http://www15.brinkster.com/danic/
-o|o| tutorial y trucos asp, vb, diseño
-o|o|--
"Xus" escribió en el mensaje
news:
Cuando haceis un upload, como comprovais que no exista un archivo con el
mismo nombre?

(y evitar así sobreescrituras)


Saludos y gracias.


Respuesta Responder a este mensaje
#4 Xus
13/12/2003 - 14:16 | Informe spam
No es mala idea esto del autonumérico!

de echo es MUY BUENA idea.

Eso si, como se el campo del autnumérico si todavía no he echo el insert?
(teniendo en cuenta que en una web pueden haver muchos inserts en poco
tiempo, no se si vale coger el max()+1)


Saludos y gracias de nuevo!

"danicastillo" ha escrit en el
missatge dels grups de discussió:
Enas Xus

bueno podrias hacerlo con filesystemobject y fileexist
Dim objFileSystem
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
if objFileSystem.FileExists(Server.MapPath("ficheroconsupathrelativo"))
...
else
...
end if

de todas formas supongo que cuando subes un archivo al server, lo apuntas


en
una tabla de la bbdd ¿no?, si es asi puedes directamente guardar el


archivo
con
nombretabla\idautonumericodelabbdd+nombredelarchivo

asi nunca sobreescribiras (a no ser q machaques un registro de la bbdd)

esa es una opcion
la otra , es "ir probando" nombres

algo como
set fso=CreateObject("Scripting.FileSystemObject")
c="\upload\" ' nombre de la carpeta
f= "nombredelfichero" ' pasado por el aspsmartupload
forigen=f ' copia
k=0
do while fso.FileExists(Server.MapPath(c+f))
k=k+1
f=k+forigen
loop
' va añadiendo numeros hasta q encuentra un "hueco"
fso.close
set fso=nothing
' en f tenemos el nombre final

es algo "lento" y para muchos archivos de igual nombre quiza en lugar de
secuencial la k, convendria ponerla aleatoria, en lugar de k=k+1 un
k=int(rnd*10000) por ejemplo (con un randomize antes del bucle claro) ,
pero vamos en un sistema real no suelen existir muchos archivos con el


mismo
nombre =)


-o|o|--
-o|o| dani castillo
-o|o| http://www15.brinkster.com/danic/
-o|o| tutorial y trucos asp, vb, diseño
-o|o|--
"Xus" escribió en el mensaje
news:
> Cuando haceis un upload, como comprovais que no exista un archivo con el
> mismo nombre?
>
> (y evitar así sobreescrituras)
>
>
> Saludos y gracias.
>
>


Respuesta Responder a este mensaje
#5 danicastillo
13/12/2003 - 15:43 | Informe spam
lo insertas primero, acto seguido haces un movelast del recordset (o un
select max(id) ) y ya lo tienes, el dato de la tabla lo puedes insertar
antes de guardar el archivo (ya q lo guardas con el id) , al sacar el
max(id) guardas el archivo ;)

eso "podria fallar" solo en el acaso de accesos realmente simultaneos (dos
clientes guardan exactamente en el mismo milisegundo... ufs!) a malas puedes
usar recodsets bloqueados, pero vamos, no es precisamente facil q coincidan
asi dos escrituras jeje

haz eso, guarda el registro y saca el maximo del id


-o|o|--
-o|o| dani castillo
-o|o| http://www15.brinkster.com/danic/
-o|o| tutorial y trucos asp, vb, diseño
-o|o|--
"Xus" escribió en el mensaje
news:
No es mala idea esto del autonumérico!

de echo es MUY BUENA idea.

Eso si, como se el campo del autnumérico si todavía no he echo el insert?
(teniendo en cuenta que en una web pueden haver muchos inserts en poco
tiempo, no se si vale coger el max()+1)


Saludos y gracias de nuevo!

"danicastillo" ha escrit en el
missatge dels grups de discussió:
> Enas Xus
>
> bueno podrias hacerlo con filesystemobject y fileexist
> Dim objFileSystem
> Set objFileSystem = CreateObject("Scripting.FileSystemObject")
> if objFileSystem.FileExists(Server.MapPath("ficheroconsupathrelativo"))
> ...
> else
> ...
> end if
>
> de todas formas supongo que cuando subes un archivo al server, lo


apuntas
en
> una tabla de la bbdd ¿no?, si es asi puedes directamente guardar el
archivo
> con
> nombretabla\idautonumericodelabbdd+nombredelarchivo
>
> asi nunca sobreescribiras (a no ser q machaques un registro de la bbdd)
>
> esa es una opcion
> la otra , es "ir probando" nombres
>
> algo como
> set fso=CreateObject("Scripting.FileSystemObject")
> c="\upload\" ' nombre de la carpeta
> f= "nombredelfichero" ' pasado por el aspsmartupload
> forigen=f ' copia
> k=0
> do while fso.FileExists(Server.MapPath(c+f))
> k=k+1
> f=k+forigen
> loop
> ' va añadiendo numeros hasta q encuentra un "hueco"
> fso.close
> set fso=nothing
> ' en f tenemos el nombre final
>
> es algo "lento" y para muchos archivos de igual nombre quiza en lugar de
> secuencial la k, convendria ponerla aleatoria, en lugar de k=k+1 un
> k=int(rnd*10000) por ejemplo (con un randomize antes del bucle claro) ,
> pero vamos en un sistema real no suelen existir muchos archivos con el
mismo
> nombre =)
>
>
> -o|o|--
> -o|o| dani castillo
> -o|o| http://www15.brinkster.com/danic/
> -o|o| tutorial y trucos asp, vb, diseño
> -o|o|--
> "Xus" escribió en el mensaje
> news:
> > Cuando haceis un upload, como comprovais que no exista un archivo con


el
> > mismo nombre?
> >
> > (y evitar así sobreescrituras)
> >
> >
> > Saludos y gracias.
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida