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

Error al crear archivo en modo ASCII y escribir contenido

Estas en el tema de Error al crear archivo en modo ASCII y escribir contenido en el foro de ASP Clásico en Foros del Web. Hola a tod@s, tengo un problema al que no encuentro solución. Os explico el proceso: hago una llamada a un webservice para descargar el contenido ...
  #1 (permalink)  
Antiguo 29/09/2010, 01:40
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Error al crear archivo en modo ASCII y escribir contenido

Hola a tod@s, tengo un problema al que no encuentro solución. Os explico el proceso: hago una llamada a un webservice para descargar el contenido de un archivo pdf. A continuación creo un archivo nuevo y le meto ese contenido. Si lo hago en modo unicode, no hay problema, se crea y se rellena perfectamente peeeero, al ser un archivo firmado digitalmente se invalida la firma.
Por lo que he averiguado, el archivo se debe crear en formato ASCII para que esto no pase pero se me presenta un nuevo problema. Si creo un archivo en este formato y escribo cualquier cosa, va bien; sin embargo, si intento escribir el contenido que he descargado me da un error. Os adjunto el código y el error, a ver si a alguien se le ocurre como solucionarlo.

Código:
Código PHP:
<%
        
Set objWinHttp4 Server.CreateObject("WinHttp.WinHttpRequest.5.1")        
        
objWinHttp4.Open "GET""http://www.dominio.com/aplicacion/v1/docs/260.pdf" 
        
objWinHttp4.setRequestHeader "Content-type""application/pdf"
        
objWinHttp4.SetCredentials "usuario","password",HTTPREQUEST_SETCREDENTIALS_FOR_PROXY
        objWinHttp4
.Send 
        texto 
objWinHttp4.responsebody

        nombre 
"260.pdf"

        
dim fs,f
        set fs
=Server.CreateObject("Scripting.FileSystemObject")
        
set f=fs.openastextstream(Server.MapPath("./pruebas/"&nombre),2,true,-2)
        
f.write(texto) ---> LINEA DEL ERROR
        f
.Close
        set f
=Nothing
        set fs
=Nothing

%> 
Error
Cita:
Microsoft VBScript runtime error '800a0005'

Invalid procedure call or argument

/serviciosonline/informeslab/prueba2.asp, línea 18
__________________
Vayamos por Partes :: Jack el Destripador
  #2 (permalink)  
Antiguo 29/09/2010, 02:04
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: Error al crear archivo en modo ASCII y escribir contenido

He encontrado una solución, lo malo es que es muuuy lenta, ya que por lo que veo va escribiendo caracter a caracter y tarda bastante, sobre todo si el archivo es muy gordo. Hay alguna forma de escribirlo de golpe??

Os dejo el código que tengo ahora:

Código PHP:
set ofs=Server.CreateObject("Scripting.FileSystemObject")
Set ofile oFS.createTextfile(server.mappath("./pruebas/algo.pdf"), True
For 
nIndex 1 to LenB(texto
ofile.write Chr(AscB(MidB(texto,nIndex,1))) 
Next 
__________________
Vayamos por Partes :: Jack el Destripador
  #3 (permalink)  
Antiguo 29/09/2010, 10:07
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: Error al crear archivo en modo ASCII y escribir contenido

Nadie sabe como hacerlo de golpe?? Es que con este metodo lleva casi dos horas y apenas ha escrito 900 Kb. Lo extraño es que para archivos pequeños (sobre unos 400 Kb) lo hace en unos 30 segundos. Sin embargo con los archivos un poco más grande (de 1'5 a 2 Mb) tarda un montón.
__________________
Vayamos por Partes :: Jack el Destripador
  #4 (permalink)  
Antiguo 08/10/2010, 13:06
 
Fecha de Ingreso: octubre-2009
Mensajes: 97
Antigüedad: 14 años, 5 meses
Puntos: 4
Respuesta: Error al crear archivo en modo ASCII y escribir contenido

Utiliza este código:
Código ASP:
Ver original
  1. <&#37;
  2.         Set objWinHttp4 = Server.CreateObject("WinHttp.WinHttpRequest.5.1")        
  3.         objWinHttp4.Open "GET", "http://www.dominio.com/aplicacion/v1/docs/260.pdf"  
  4.         objWinHttp4.setRequestHeader "Content-type", "application/pdf"
  5.         objWinHttp4.SetCredentials "usuario","password",HTTPREQUEST_SETCREDENTIALS_FOR_PROXY
  6.         objWinHttp4.Send  
  7.         texto = objWinHttp4.responsebody
  8. Set ado=Server.CreateObject("ADODB.Stream")
  9. ado.type=1
  10. ado.open
  11. ado.write texto
  12. ado.savetofile server.mappath("nombre.pdf")
  13. ado.close
  14. %>

El objeto ADODB.Stream convierte el texto mucho mas rápido que fso.
  #5 (permalink)  
Antiguo 20/10/2010, 07:45
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: Error al crear archivo en modo ASCII y escribir contenido

Vaya, de esta forma es instantáneo!!! Muchas gracias por la ayuda y perdón por tardar en responder, es que estaba de viaje y no lo he podido probar hasta ahora.

Salu2
__________________
Vayamos por Partes :: Jack el Destripador
  #6 (permalink)  
Antiguo 27/11/2010, 21:22
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 3 meses
Puntos: 16
Respuesta: Error al crear archivo en modo ASCII y escribir contenido

hola, oye, podrias poner un ejemplo de como llamar a un webservice con asp?
  #7 (permalink)  
Antiguo 28/11/2010, 12:43
Avatar de angel_dope  
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 4 meses
Puntos: 8
Respuesta: Error al crear archivo en modo ASCII y escribir contenido

Pues depende del tipo de webservice, en este caso, la llamada es como se ve en el código:
Código ASP:
Ver original
  1. Set objWinHttp4 = Server.CreateObject("WinHttp.WinHttpRequest.5.1")        
  2.         objWinHttp4.Open "GET", "http://www.dominio.com/aplicacion/v1/docs/260.pdf"  
  3.         objWinHttp4.setRequestHeader "Content-type", "application/pdf"
  4.         objWinHttp4.SetCredentials "usuario","password",HTTPREQUEST_SETCREDENTIALS_FOR_PROXY
  5.         objWinHttp4.Send

En este caso llamas al webservice para descargar el contenido de un archivo pdf
__________________
Vayamos por Partes :: Jack el Destripador

Etiquetas: ascii, contenido, escribir, modo
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 13:15.