[ASP] Download bestand met ASP getfile("http://) ?

Pagina: 1
Acties:
  • 399 views sinds 30-01-2008
  • Reageer

  • Roel Broersma
  • Registratie: Maart 2000
  • Laatst online: 17-08 17:25
Ik moet een bestand kopieeren. Nu is dit geen probleem met het Filesystem object wat al in ASP zit, en dan : GetFile("blabla.xls") en het dan weg te schijven met Copy().

Nu staat het bestand blabla.xls echter op een website http://www.domein.nl/blabla.xls

Met GetFile is het nog niet gelukt (ben de hele middag alweer bezig :) om een REMOTE file te downloaden en kopieeren. Kan ik dit nog doen binnen het FileSystem object of moet ik dan toch echt met sockets aan de gang ?

...don't know what should be here...


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
wat wil je nu eigenlijk precies??

het bestand opvragen?? dat kan met gorgi's oplossing (al is winhttp geen standaard object)

het bestand oversturen, dat kan niet standaard met ASP

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

WinHTTP? MSXML wordt er gebruikt toch?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Roel Broersma
  • Registratie: Maart 2000
  • Laatst online: 17-08 17:25
Ik wil het bestand door de Server laten downloaden vanaf een bepaalde lokatie en door de server laten wegschrijven (lokaal).
Dit wil ik dan in een scriptje zetten in een LOOP.

Het is dus meer VB dan ASP, omdat ik verder niet op het scherm zal laten zien ofzo. (solly:))

...don't know what should be here...


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Erhm.. Dus? :? Lijkt me dat je het nog steeds kan gebruiken? :?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
gorgi_19 schreef op 16 October 2003 @ 17:56:
WinHTTP? MSXML wordt er gebruikt toch?
f*ck, :o fabian zit te slapen, ik had al een voorbeeld verder gedrukt en zag daar bij de asp source winhttp staan 8)7


gorgi = True
Roel Broersma schreef op 16 October 2003 @ 17:58:
Ik wil het bestand door de Server laten downloaden vanaf een bepaalde lokatie en door de server laten wegschrijven (lokaal).
Dit wil ik dan in een scriptje zetten in een LOOP.

Het is dus meer VB dan ASP, omdat ik verder niet op het scherm zal laten zien ofzo. (solly:))
Lijkt mij ook wel mogelijk om met msxml een binary string op te vragen die je vervolgens lokaal weer wegschrijft... en je client ziet daar verder weinig van...

[ Voor 50% gewijzigd door faabman op 16-10-2003 18:07 ]

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • Roel Broersma
  • Registratie: Maart 2000
  • Laatst online: 17-08 17:25
Dat zijn dus inderaad al sockets etc. ja. WinHTTP is inderdaad niet standaard.

Volgens mij is MSXML3 (of 4) de laatste die standaard in IIS5 (W2K) zit.

Dat ik met sockets die file kon ophalen, dat wist ik, maar hoe schrijf ik die dan met het FileSystem object weg ?
De hele inhoud in een nieuwe file zetten en die dan opslaan ? Of is er dus iets van een simpelere manier.. bijv:

..FileSystem...GetFile( hierin doe ik dan die socket open en send (?) )
en dan
..FileSystem...Copy()

?

...don't know what should be here...


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
wat je daar schrijft kan niet je moet op de bronserver een asp bestand neerzetten wat een binary string uitspuugt, dit bestand met msxml opvragen, de string die msxml als responsetext krijgt vervolgens lokaal in een bestand opslaan

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • Roel Broersma
  • Registratie: Maart 2000
  • Laatst online: 17-08 17:25
Een .XLS bestand op een website ergens.. die kan ik toch gewoon ophalen zonder die webmaster daar te vragen of hij iets speciaals doet ?

...don't know what should be here...


  • Roel Broersma
  • Registratie: Maart 2000
  • Laatst online: 17-08 17:25
PS. De responsetext/body of stream zo'n actie is niets. Terwijl ik wel een 200 OK heb.

...don't know what should be here...


  • Roel Broersma
  • Registratie: Maart 2000
  • Laatst online: 17-08 17:25
UPDATE: Ik krijg nu wel response.

Respone.Write ResponseBody is "????"
Response.Write ResponseStream krijg ik de error:

Response object error 'ASP 0106 : 80020005'
Type Mismatch
/test.asp, line 0
An unhandled data type was encountered.

Terwijl ik volgens mij nu juist alle $#@%@#$%#$% van het Excel bestand voor m;n neus zou moeten krijgen.

...don't know what should be here...


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
doe is een Response.BinaryWrite

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


  • Roel Broersma
  • Registratie: Maart 2000
  • Laatst online: 17-08 17:25
Gelukt :)

Uiteindelijke heb ik de BODY weggeschreven met het FileSystem object (functie WRITE). Hiervoor moest ik nog wel EERST een BinaryToString functie doen, anders kan/mag ik hem niet wegschrijven. Aangezien het FileSystem object GEEN binary data kan schrijven.
Een paar functies/methodes vond ik op: http://www.pstruh.cz/tips/detpg_binarytostring.htm

Waarvan deze het snelste en toch nog meest eenvoudig is:

Function RSBinaryToString(xBinary)
'Antonin Foller, http://www.pstruh.cz
'RSBinaryToString converts binary data (VT_UI1 | VT_ARRAY Or MultiByte string)
'to a string (BSTR) using ADO recordset

Dim Binary
'MultiByte data must be converted To VT_UI1 | VT_ARRAY first.
If vartype(xBinary)=8 Then Binary = MultiByteToBinary(xBinary) Else Binary = xBinary

Dim RS, LBinary
Const adLongVarChar = 201
Set RS = CreateObject("ADODB.Recordset")
LBinary = LenB(Binary)

If LBinary>0 Then
RS.Fields.Append "mBinary", adLongVarChar, LBinary
RS.Open
RS.AddNew
RS("mBinary").AppendChunk Binary
RS.Update
RSBinaryToString = RS("mBinary")
Else
RSBinaryToString = ""
End If
End Function

...don't know what should be here...

Pagina: 1