Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASP Clásico (http://www.forosdelweb.com/f15/)
-   -   xelUpload: error en llamada a procedimiento (http://www.forosdelweb.com/f15/xelupload-error-llamada-procedimiento-590017/)

PosProdukcion 26/05/2008 04:46

xelUpload: error en llamada a procedimiento
 
Hola amigos, retomo un viejo tema que parece bastante común pero no he visto soluciones, ya que buscando en google, se ven muchos planteamientos del mismo problema pero pocas soluciones.

En este post se habla de ello, pero la solución quedó en suspenso...

El caso es que al hacer fichero.GuardarComo nombre, ruta_server, me da este error:

Código:

Error de Microsoft VBScript en tiempo de ejecución error '800a0005'

Argumento o llamada a procedimiento no válidos

/xelupload.asp, linea 194

[es esta linea de codigo: oFich.Write Chr(AscB(MidB(Datos, i, 1)))]

Esto ocurre al hacer upload, cosa extraña: si recargo la página hace el upload correctamente...

Mis versiones de script son estas, que en principio cumplen con los requisitos de xelUpload:

Código:

ScriptEngine: VBScript

ScriptEngineMajorVersion: 5

ScriptEngineMinorVersion: 7

ScriptEngineBuildVersion: 5730

Lo más curioso es que en otras ocasiones ya he usado xelUpload en la misma máquina sin ningún problema

Espero que podáis ayudarme

Gracias

Shiryu_Libra 26/05/2008 10:26

Respuesta: xelUpload: error en llamada a procedimiento
 
habria que verificar si no llegan NULL o vacios, parece que todo indica por ese lado
:pensando:

podrias poner parte del codigo anterior a esa linea

PosProdukcion 27/05/2008 04:36

Respuesta: xelUpload: error en llamada a procedimiento
 
¿te refieres al código de la clase xelUpload? Ok, ahí te lo pongo...

Por mi parte la llamada se realiza con:

Código:

For each fich in upld.Ficheros.Items
    fich.GuardarComo nombre_fichero, ruta_server
Next

Ninguno de ellos es vacío y la ruta_server está mapeada

Dentro de xelUpload (que es una clase descargada de internet), el código de esa sub es el siguiente:

Código:

Public Sub GuardarComo(nombrefichero, ruta)
Dim oFSO, oFich, i

if ruta = "" or nombrefichero = "" then Exit Sub
if Mid(ruta, Len(ruta)) <> "\" then                '"       
        'añado la ultima barra a la ruta
        ruta = ruta & "\"                                                '"
end if

set oFSO = Server.CreateObject("Scripting.FileSystemObject")
if not oFSO.FolderExists(ruta) then Exit Sub
set oFich = oFSO.CreateTextFile(ruta & nombrefichero, true)

for i = 1 to LenB(Datos)
          oFich.Write Chr(AscB(MidB(Datos, i, 1)))
next       

oFich.Close
set oFSO = nothing


End Sub

He probado a proteger el oFich.Write Chr(AscB(MidB(Datos, i, 1))) con un If Datos & "" <> "" aunque sigue dando el mismo error, en lugar de subir solo un fichero erróneo de 1kb sube un fichero erróneo de 401 kb, o sea, que por ahí puede andar la cosa, pero no se me ocurre como solucionarlo y por qué antes no me ocurría

Gracias, saludos

Shiryu_Libra 27/05/2008 11:36

Respuesta: xelUpload: error en llamada a procedimiento
 
:pensando:, y ya que andamos con eso de la ruta..... como te escribe la ruta

Cita:

response.write ruta_server
en este caso para saber si le falta el "\" al final, por que en lo relacionado a direccionamiento virtual

si solo le estas mandando "server.mappath("./")" y anexas un directorio extra, "server.mappath("./extra")", le haria falta la barra invertida

carpeta = server.mappath("./") & "extra\"

solo seria verificacion de la ruta para guardar, no tanto del nombre del archivo

:pensando:

PosProdukcion 27/05/2008 12:23

Respuesta: xelUpload: error en llamada a procedimiento
 
Pues parece que no va por ahí la cosa, tanto da que anexe una barra "\" al final de la ruta (después de hacer Server.MapPath) como sin ponerla...

La llamada la he hecho con estos dos casos:

Código:

c:\inetpub\wwwroot\upload\users\2008.05

c:\inetpub\wwwroot\upload\users\2008.05\

Que se corresponde con

Código:


Server.MapPath("/upload/users/2008.05")

¿Cosa rara verdad? Creo que la cosa va más por la sentencia oFich.Write Chr(AscB(MidB(Datos, i, 1))), como decías antes debe ser que el error salta al encontrar un nulo en esa línea, lo que no se es como tratarlo, ya que no basta con If Datos & "" <> "" Then...

Gracias por tus respuestas :arriba:

EDITO: VAYA COSA MÁS RARA!! Bueno, pues resulta que probando, antes sin poner la barra final en la ruta digamos que funcionaba ok una de cada 20 veces que fallaba, ahora con la barra final, pues falla una de cada 20 veces que funciona (vamos, que funcionan casi todos los ficheros que subo, y no, el error no está en los ficheros, son jpg bien formados)

Shiryu_Libra 27/05/2008 13:18

Respuesta: xelUpload: error en llamada a procedimiento
 
Cita:

Iniciado por PosProdukcion (Mensaje 2422146)
....
[/code]¿Cosa rara verdad? Creo que la cosa va más por la sentencia oFich.Write Chr(AscB(MidB(Datos, i, 1))), como decías antes debe ser que el error salta al encontrar un nulo en esa línea, lo que no se es como tratarlo, ya que no basta con If Datos & "" <> "" Then...

tendremos que recurrir al Sñr de las oscuridades para que nos ilumine el camino hacia una pronta respuesta (p.d. Donde Andara Mister Darkness o Sensei tiguron:pensando:) :-D
y solo por curiosidad, para que sirve este Amperson dentro del IF

Cita:

If Datos & "" <> "" Then...
:pensando:???
Cita:

Iniciado por PosProdukcion (Mensaje 2422146)
....
EDITO: VAYA COSA MÁS RARA!! Bueno, pues resulta que probando, antes sin poner la barra final en la ruta digamos que funcionaba ok una de cada 20 veces que fallaba, ahora con la barra final, pues falla una de cada 20 veces que funciona (vamos, que funcionan casi todos los ficheros que subo, y no, el error no está en los ficheros, son jpg bien formados)

90% favorable:arriba:, es mejor que 90% desfavorable :abajo: :-D

PosProdukcion 27/05/2008 14:44

Respuesta: xelUpload: error en llamada a procedimiento
 
Cita:

Iniciado por Shiryu_Libra (Mensaje 2422221)
y solo por curiosidad, para que sirve este Amperson dentro del IF

Ah, eso! Como no se el tipo de Datos, pues es una forma "casera" de convertirlo a string y comprobar si está vacía, en realidad supongo que sería más correcto preguntar si es nulo en función de su tipo de datos...

Seguiré probando en los próximos días a ver como de estable se muestra el upload... ya os contaré...

Shiryu_Libra 27/05/2008 18:39

Respuesta: xelUpload: error en llamada a procedimiento
 
Cita:

Iniciado por PosProdukcion (Mensaje 2422415)
Ah, eso! Como no se el tipo de Datos, pues es una forma "casera" de convertirlo a string y comprobar si está vacía, en realidad supongo que sería más correcto preguntar si es nulo en función de su tipo de datos...

Seguiré probando en los próximos días a ver como de estable se muestra el upload... ya os contaré...

hasta se me afigura que eres paisano (mexicano:-D)

Cita:

if (cstr(Datos))<>"" then
o en su caso de null o vacio
Cita:

if isnull(cstr(Datos)) or isempty(cstr(Datos)) then
pero buena inventiva, :risa:

PosProdukcion 28/05/2008 01:46

Respuesta: xelUpload: error en llamada a procedimiento
 
Bueno, soy español, pero ya sabes que queda cerca de méxico, sólo un poquito de agua entre medias :borracho:

Netzai 09/09/2008 12:35

Respuesta: xelUpload: error en llamada a procedimiento
 
Buen día

Espero que tengas el mismo error que tenia y tambien sea buen dia para ti, toda una mañana buscando el error y casi entro hasta el codigo maquina. Bueno exagero un poco.

Igual ya habia usado xelUpload y me habia funcionado muy bien y ahora para otra aplicacion que estoy desarrollando no queria.
Estoy desarrollando con Dreamweaver ahora con CS3 el primero fue con MX

y los encabezados que pone por default son diferentes

lo cambie al
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
que es el que ponia DW MX y ya se solucionó.

En resumen. Cuidar el tipo de codificación de la página que ejecuta el Upload.

Espero haberme explicado y sirva a otros.
Suerte


La zona horaria es GMT -6. Ahora son las 19:18.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.