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

Error en Upload ASP

Estas en el tema de Error en Upload ASP en el foro de ASP Clásico en Foros del Web. Hola Amigos de esta comunidad, tengo un problema en un upload que hago en asp, para subir archivos, yo quiero que me los renombre al ...
  #1 (permalink)  
Antiguo 04/08/2008, 09:04
Avatar de OceanBorn  
Fecha de Ingreso: agosto-2008
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Error en Upload ASP

Hola Amigos de esta comunidad,
tengo un problema en un upload que hago en asp, para subir archivos, yo quiero que me los renombre al subir y estoy trabajando con esto y pasare a mostrarles el problema que me surge:

formulario.aspx
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Page Language="C#" %>
<html dir="ltr" xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sin título 1</title>
</head>

<body>

<form name="form1" method="post" ENCTYPE="multipart/form-data" ACTION="Upload.asp">
<p>
<INPUT TYPE=FILE SIZE=60 NAME="FILE1">
</p>
<p>&nbsp; </p>
<p><BR>
<INPUT TYPE=SUBMIT VALUE="Upload!"> 

</p>
</FORM>
</body>

</html>
upload.asp
Código:
<html>
<head>
<title>Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.style1 {
	color: #FFFFFF;
}
</style>
</head>

<body style="background-color: #605148">
<%
Set Upload = Server.CreateObject("Persits.Upload.1")
Count= Upload.Save("AGREGO CARPETA DEL FTP DEL SITIO CON SUS RESPECTIVOS PERMISOS")
%>
<% = Count %> ficheros subidos.
<% 
Dim FSO, Fich , NombreAnterior, NombreNuevo 
'Inicialización
NombreAnterior = imagen
NombreNuevo ="Nuevo.jpg" 

' Instanciamos el objeto
Set FSO = Server.CreateObject("Scripting.FileSystemObject") 
' Asignamos el fichero a renombrar a la variable fich
Set Fich = FSO.GetFile(Server.MapPath("EN ESTE PASO TENGO DUDAS, PONGO LA MISMA CARPETA DEL SITIO DEL UPLOAD.SAVE" & NombreAnterior)) 
' llamamos a la funcion copiar, 
'y duplicamos el archivo pero con otro nombre
Call Fich.Copy(Server.MapPath("LA MISMA CARPETA" & NombreNuevo)) 
' finalmente borramos el fichero origi nal
Call Fich.Delete() 

Set Fich = Nothing 
Set FSO = Nothing 


%>
<%
Set Upload = Nothing
%>
<a href="index.html"><span class="style1">Continuar
</span></a>
</body>
</html>
Al trata de subir el archivo, el explorer me visualiza este error:

1 ficheros subidos.
Server.MapPath() error 'ASP 0172 : 80004005'

Invalid Path

/without_flash/Upload_new.asp, line 27

The Path parameter for the MapPath method must be a virtual path. A physical path was used.


la line 27 que especifica, es:
Set Fich = FSO.GetFile(Server.MapPath("EN ESTE PASO TENGO DUDAS, PONGO LA MISMA CARPETA DEL SITIO DEL UPLOAD.SAVE" & NombreAnterior)).

Si alguien me podria ayudar en esto, se lo agradeceria.

Saludos.
  #2 (permalink)  
Antiguo 04/08/2008, 11:57
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: Error en Upload ASP

MapPath sirve para sacar el path físico del disco duro que se solicita. Imagina que quieres saber donde está el directorio raiz de la aplicacion web para guardar un archivo. Lo buscas con MapPath:

dirRaiz = server.MapPath("/.")

dirRaiz podria ser c:\misaplicacionesweb\

luego podrás concatenar el nombre del archivo:

dirRaiz = dirRaiz & nombreAnterior

Seria asi

Set Fich = FSO.GetFile(Server.MapPath("\.") & NombreAnterior).

(Supongo que EN ESTE PASO TENGO DUDAS, PONGO LA MISMA CARPETA DEL SITIO DEL UPLOAD.SAVE no es literal, que pones una dirección relativa....)


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #3 (permalink)  
Antiguo 04/08/2008, 12:52
Avatar de OceanBorn  
Fecha de Ingreso: agosto-2008
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Error en Upload ASP

Cita:
Iniciado por tammander Ver Mensaje
MapPath sirve para sacar el path físico del disco duro que se solicita. Imagina que quieres saber donde está el directorio raiz de la aplicacion web para guardar un archivo. Lo buscas con MapPath:

dirRaiz = server.MapPath("/.")

dirRaiz podria ser c:\misaplicacionesweb\

luego podrás concatenar el nombre del archivo:

dirRaiz = dirRaiz & nombreAnterior

Seria asi

Set Fich = FSO.GetFile(Server.MapPath("\.") & NombreAnterior).

(Supongo que EN ESTE PASO TENGO DUDAS, PONGO LA MISMA CARPETA DEL SITIO DEL UPLOAD.SAVE no es literal, que pones una dirección relativa....)


Un saludo

Hola tammander, gracias por acudir, osea pongo la carpeta en el sitio ftp con los permisos brindados en los tres pasos.

Count= Upload.Save("c:\clients\misitio\data\carpetaconpermisos")
' Instanciamos el objeto
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
' Asignamos el fichero a renombrar a la variable fich
Set Fich = FSO.GetFile(Server.MapPath("c:\clients\misitio\data\carpetaconpermisos" & NombreAnterior))
' llamamos a la funcion copiar,
'y duplicamos el archivo pero con otro nombre
Call Fich.Copy(Server.MapPath("c:\clients\misitio\data\carpetaconpermisos" & NombreNuevo))
' finalmente borramos el fichero original


por eso la duda, en los tres pasos pongo la misma carpeta, estare haciendo mal?
  #4 (permalink)  
Antiguo 04/08/2008, 14:25
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: Error en Upload ASP

Como te he dicho antes, MapPath sirve para averiguar el path físico desde un path relativo, con lo cual si ya tienes el path físico no necesitas usar MapPath:


Count= Upload.Save("c:\clients\misitio\data\carpetaconpermisos")
' Instanciamos el objeto
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
' Asignamos el fichero a renombrar a la variable fich
Set Fich = FSO.GetFile("c:\clients\misitio\data\carpetaconpermisos\" & NombreAnterior)
' llamamos a la funcion copiar,
'y duplicamos el archivo pero con otro nombre
Call Fich.Copy("c:\clients\misitio\data\carpetaconpermisos\" & NombreNuevo)
' finalmente borramos el fichero original

En caso de que no supieras donde esta dicho path, si usaria MapPath. Por ejemplo, imagina que ese código esta en un script que cuelga de c:\clients\misitio\ entonces si usaria MapPath:

dirData = Server.MapPath("data/carpetaconpermisos")

Count= Upload.Save(dirData)
' Instanciamos el objeto
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
' Asignamos el fichero a renombrar a la variable fich
Set Fich = FSO.GetFile(dirData & "\" & NombreAnterior)
' llamamos a la funcion copiar,
'y duplicamos el archivo pero con otro nombre
Call Fich.Copy(dirData & "\" & NombreNuevo)
' finalmente borramos el fichero original

¿Ves la diferencia entre las dos barras invertidas? Una es típicamente de la web (hacia adelante). Es una dirección relativa. La otra (hacia atras) es la típica de Windows/MSDOS y es una dirección absoluta o física (como más rabia te dé decirlo )



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #5 (permalink)  
Antiguo 04/08/2008, 15:02
Avatar de OceanBorn  
Fecha de Ingreso: agosto-2008
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Sonrisa Respuesta: Error en Upload ASP

Cita:
Iniciado por tammander Ver Mensaje
Como te he dicho antes, MapPath sirve para averiguar el path físico desde un path relativo, con lo cual si ya tienes el path físico no necesitas usar MapPath:


Count= Upload.Save("c:\clients\misitio\data\carpetaconpermisos")
' Instanciamos el objeto
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
' Asignamos el fichero a renombrar a la variable fich
Set Fich = FSO.GetFile("c:\clients\misitio\data\carpetaconpermisos\" & NombreAnterior)
' llamamos a la funcion copiar,
'y duplicamos el archivo pero con otro nombre
Call Fich.Copy("c:\clients\misitio\data\carpetaconpermisos\" & NombreNuevo)
' finalmente borramos el fichero original

En caso de que no supieras donde esta dicho path, si usaria MapPath. Por ejemplo, imagina que ese código esta en un script que cuelga de c:\clients\misitio\ entonces si usaria MapPath:

dirData = Server.MapPath("data/carpetaconpermisos")

Count= Upload.Save(dirData)
' Instanciamos el objeto
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
' Asignamos el fichero a renombrar a la variable fich
Set Fich = FSO.GetFile(dirData & "\" & NombreAnterior)
' llamamos a la funcion copiar,
'y duplicamos el archivo pero con otro nombre
Call Fich.Copy(dirData & "\" & NombreNuevo)
' finalmente borramos el fichero original

¿Ves la diferencia entre las dos barras invertidas? Una es típicamente de la web (hacia adelante). Es una dirección relativa. La otra (hacia atras) es la típica de Windows/MSDOS y es una dirección absoluta o física (como más rabia te dé decirlo )



Un saludo

Holas de nuevo tammander, eh visto lo que me estas brindando y me a tirado otro error, perdona mi ignoracia si sigo haciendo algo mal:
viendo lo que me decis modifique:

<%
Set Upload = Server.CreateObject("Persits.Upload.1")
Count= Upload.Save("c:/clients/misitio/data")
%>
<% = Count %> ficheros subidos.
<%
Dim FSO, Fich , NombreAnterior, NombreNuevo
'Inicialización
NombreAnterior = imagen
NombreNuevo ="Nuevo.jpg"

' Instanciamos el objeto
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
' Asignamos el fichero a renombrar a la variable fich
Set Fich = FSO.GetFile(Server.MapPath("misitio/data" & "\" & NombreAnterior))
' llamamos a la funcion copiar,
'y duplicamos el archivo pero con otro nombre
Call Fich.Copy(Server.MapPath("misitio/datadata" & "\" & NombreNuevo))
' finalmente borramos el fichero original
Call Fich.Delete()

y error es el siguiente:

1 ficheros subidos.
Microsoft VBScript runtime error '800a0035'

File not found

/without_flash/Upload_new.asp, line 27


line 27 del maldito error: Set Fich = FSO.GetFile(Server.MapPath("misitio/data" & "\" & NombreAnterior)).
  #6 (permalink)  
Antiguo 04/08/2008, 15:08
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: Error en Upload ASP

No uses el MapPath. Segun veo el script que ejecuta las instrucciones anteriores no esta en el camino de los archivos que guardas (/without_flash/Upload_new.asp). Usa directamente la direccion absoluta, tal como haces para guardar con el Upload:

Count= Upload.Save("/c:/clients/misitio/data")


Quedaria asi:

<%
Set Upload = Server.CreateObject("Persits.Upload.1")
Count= Upload.Save("/c:/clients/misitio/data")
%>
<% = Count %> ficheros subidos.
<%
Dim FSO, Fich , NombreAnterior, NombreNuevo
'Inicialización
NombreAnterior = imagen
NombreNuevo ="Nuevo.jpg"

' Instanciamos el objeto
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
' Asignamos el fichero a renombrar a la variable fich
Set Fich = FSO.GetFile("c:\clients\misitio\data\" & NombreAnterior)
' llamamos a la funcion copiar,
'y duplicamos el archivo pero con otro nombre
Call Fich.Copy("c:\clients\misitio\data\" & NombreNuevo)
' finalmente borramos el fichero original
Call Fich.Delete()


Copialo y pegalo en tu script.
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #7 (permalink)  
Antiguo 05/08/2008, 06:35
Avatar de OceanBorn  
Fecha de Ingreso: agosto-2008
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Error en Upload ASP

Cita:
Iniciado por tammander Ver Mensaje
No uses el MapPath. Segun veo el script que ejecuta las instrucciones anteriores no esta en el camino de los archivos que guardas (/without_flash/Upload_new.asp). Usa directamente la direccion absoluta, tal como haces para guardar con el Upload:

Count= Upload.Save("/c:/clients/misitio/data")


Quedaria asi:

<%
Set Upload = Server.CreateObject("Persits.Upload.1")
Count= Upload.Save("/c:/clients/misitio/data")
%>
<% = Count %> ficheros subidos.
<%
Dim FSO, Fich , NombreAnterior, NombreNuevo
'Inicialización
NombreAnterior = imagen
NombreNuevo ="Nuevo.jpg"

' Instanciamos el objeto
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
' Asignamos el fichero a renombrar a la variable fich
Set Fich = FSO.GetFile("c:\clients\misitio\data\" & NombreAnterior)
' llamamos a la funcion copiar,
'y duplicamos el archivo pero con otro nombre
Call Fich.Copy("c:\clients\misitio\data\" & NombreNuevo)
' finalmente borramos el fichero original
Call Fich.Delete()


Copialo y pegalo en tu script.
tammander, mira eh hecho lo que me dijiste, perdona pero eh aclarado las carpetas para un mejor entendimiento.

<%
Set Upload = Server.CreateObject("Persits.Upload.1")
Count= Upload.Save("d:/clients/misitio/carpetaftp/without_flash/newfile")
%>
<% = Count %> ficheros subidos.
<%
Dim FSO, Fich , NombreAnterior, NombreNuevo
'Inicialización
NombreAnterior = imagen
NombreNuevo ="Nuevo.jpg"

' Instanciamos el objeto
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
' Asignamos el fichero a renombrar a la variable fich
Set Fich = FSO.GetFile("d:/clients/misitio/carpetaftp/without_flash/newfile" & NombreAnterior)
' llamamos a la funcion copiar,
'y duplicamos el archivo pero con otro nombre
Call Fich.Copy("d:/clients/misitio/carpetaftp/without_flash/newfile" & NombreNuevo)
' finalmente borramos el fichero original
Call Fich.Delete()

Los archivos formulario.aspx y upload_new.asp estan dentro de la carpeta "newfile" y el error que me tira es el siguiente:

Persits.Upload.1 error '800a0005'

The system cannot find the path specified.

/without_flash/newfile/Upload_new.asp, line 15


error de la line 15: Count= Upload.Save("d:/clients/misitio/carpetaftp/without_flash/newfile")

dios no me sale una :(
  #8 (permalink)  
Antiguo 05/08/2008, 06:43
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: Error en Upload ASP

jajajaja, no te preocupes, nos pasa a todos.


Si vas a dejar los archivos y el script en el mismo sitio si te conviene usar MapPath:

1 - Instancia una variable con el mapPath:

path = server.MapPath(".") & "\" ' Indica que averigue donde esta el directorio actual y añadimos una barra invertida al final para indicar que es un directorio

2 - Cambia todas las direcciones absolutas por la variable

Count= Upload.Save("d:/clients/misitio/carpetaftp/without_flash/newfile") por Count= Upload.Save(path)

Set Fich = FSO.GetFile("d:/clients/misitio/carpetaftp/without_flash/newfile" & NombreAnterior) por Set Fich = FSO.GetFile(path & NombreAnterior)

Call Fich.Copy("d:/clients/misitio/carpetaftp/without_flash/newfile" & NombreNuevo) por Call Fich.Copy(path & NombreNuevo)


Ya nos cuentas



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #9 (permalink)  
Antiguo 05/08/2008, 07:21
Avatar de OceanBorn  
Fecha de Ingreso: agosto-2008
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Error en Upload ASP

a ver si entendi...

<%
Set Upload = Server.CreateObject("Persits.Upload.1")
Count= Upload.Save(path)
%>
<% = Count %> ficheros subidos.
<%
Dim FSO, Fich , NombreAnterior, NombreNuevo, path >>>creo una variable<<<
'Inicialización
NombreAnterior = imagen
NombreNuevo ="Nuevo.jpg"
path = server.MapPath(".") & "\" >>>le doy lo que representa<<<

' Instanciamos el objeto
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
' Asignamos el fichero a renombrar a la variable fich
Set Fich = FSO.GetFile(path & NombreAnterior)
' llamamos a la funcion copiar,
'y duplicamos el archivo pero con otro nombre
Call Fich.Copy(path & NombreNuevo)
' finalmente borramos el fichero original
Call Fich.Delete()

Set Fich = Nothing
Set FSO = Nothing


%>
<%
Set Upload = Nothing
%>

No se si co nel punto me diste a entender que ponga d:/clients/argentina-hosting.com/jcl.com.ar/without_flash/newfile no lo hize, perdona mi ignorancia, pero asi como me digiste tira:

1 ficheros subidos.
Microsoft VBScript runtime error '800a0035'

File not found

/without_flash/newfile/Upload_new.asp, line 28


line 28: Set Fich = FSO.GetFile(path & NombreAnterior)
  #10 (permalink)  
Antiguo 05/08/2008, 07:44
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: Error en Upload ASP

Esto:

path = server.MapPath(".") & "\"

antes que esto:

Count= Upload.Save(path)

Recuerda que queremos saber donde guardamos el archivo. Al asignar a path el directorio, luego sabremos de donde leer. Si path no tiene asignado ningun valor, Upload guardará en el directorio por defecto de Windows, cosa que no queremos. Por cierto, ¿donde asignas los valores de NombreAnterior y NombreNuevo?


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #11 (permalink)  
Antiguo 05/08/2008, 07:58
Avatar de OceanBorn  
Fecha de Ingreso: agosto-2008
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Error en Upload ASP

ok, entonces algo asi?

<%
Dim path = server.MapPath(".") & "\"

Set Upload = Server.CreateObject("Persits.Upload.1")
Count= Upload.Save(path)
%>
<% = Count %> ficheros subidos.
<%
Dim FSO, Fich , NombreAnterior, NombreNuevo,
'Inicialización
NombreAnterior = imagen
NombreNuevo ="Nuevo.jpg"

' Instanciamos el objeto
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
' Asignamos el fichero a renombrar a la variable fich
Set Fich = FSO.GetFile(path & NombreAnterior)
' llamamos a la funcion copiar,
'y duplicamos el archivo pero con otro nombre
Call Fich.Copy(path & NombreNuevo)
' finalmente borramos el fichero original
Call Fich.Delete()

Set Fich = Nothing
Set FSO = Nothing


%>
<%
Set Upload = Nothing
%>

los valores que le asgino son
Dim FSO, Fich , NombreAnterior, NombreNuevo,
'Inicialización
NombreAnterior = imagen
NombreNuevo ="Nuevo.jpg"


esta mal? no entiendo mucho :(
  #12 (permalink)  
Antiguo 05/08/2008, 08:20
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: Error en Upload ASP

Te recomiendo que le eches un vistazo al manual de este componente de Persist:

http://www.aspupload.com/Manual.htm

1 - Necesitaria saber como llamas al input type="File" del formulario que usas para subir el archivo

2 - Lo necesito para saber cómo se llama el archivo que el usuario va a subir.

3 - Dim no es como var de JScript. No se puede asignar valores a una variable dentro de su definicion:

Dim path
path = "Lo que sea"

Dim path = "lo que sea" te dará error

4 - Para tomar el nombre del archivo que se sube se debe asignar primero a un objeto File:

Set File = Upload.Files("FILE1") ' NOMBRE DEL INPUT QUE USAS EL EL FORMULARIO
If Not File Is Nothing Then
NombreAnterior = File.OriginalFileName
End If

Te recomiendo que vayas al enlace que te puse antes y hagas pruebas

El resto lo veo bien (Quitale el Dim de path)

Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #13 (permalink)  
Antiguo 05/08/2008, 08:31
Avatar de OceanBorn  
Fecha de Ingreso: agosto-2008
Mensajes: 7
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Error en Upload ASP

Bueno vere que puedo hacer, pero viendo el manual, en ningun lado veo una opcion de rename, yo necesito solo un upload que renombre el archivo, si este fuera el caso que lo renombre porque quiero o por el simple hecho que no perche un archivo con el mismo nombre. Gracias por acudir y tenerme paciencia, seguro volvere estoy mirando lo que me pasaste.
  #14 (permalink)  
Antiguo 05/08/2008, 08:44
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Respuesta: Error en Upload ASP

Tienes la opción OverwriteFiles (http://www.aspupload.com/object_uplo...OverwriteFiles) o FileExists (http://www.aspupload.com/object_upload.html#FileExists) para evitar eso. Luego puedes tomar el nombre asignado por Upload usando FileName (http://www.aspupload.com/object_file.html#FileName)


Si sigues con problemas, no dudes en seguir preguntando


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
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 14:12.