[ASP] - Plaatje opslaan via HTTP-Request

Pagina: 1
Acties:

  • Nutcaze
  • Registratie: Oktober 1999
  • Laatst online: 02-04 22:58
Ik wil een HTTP Request doen op een plaatje willekeurig ergens op internet en wil dit plaatje dan opslaan. Nou heb ik het volgende stukje code gefabriceerd:
code:
1
2
3
4
5
Set objXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")
objXmlHttp.open "GET", "http://www.google.nl/images/logo_sm.gif", False
objXmlHttp.Send
Output = objXmlHttp.responseStream
Set objXmlHttp = Nothing


Nou denk ik dat in Output de juiste data zit maar hoe schrijf ik dit nu weg? Is daar een mogelijkheid toe?

Not all chemicals are bad. Without hydrogen or oxygen, for example, there would be no way to make water, a vital ingredient in beer.


  • Ashtaroth
  • Registratie: December 2003
  • Laatst online: 16-02 09:59
Je moet de response in een byte array stoppen en vervolgens de array opslaan als plaatje.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim arrBytes()       As Byte
Dim intFile          As Integer
Dim strFilePath      As String

strFilePath = "c:\plaatje.jpg"

objXmlHttp.responseBody

'get free handle for that file
intFile = FreeFile
        
'write downloaded data to the file
Open strFilePath For Binary As #intFile
    Put #intFile, , arrBytes()
Close #intFile

  • Nutcaze
  • Registratie: Oktober 1999
  • Laatst online: 02-04 22:58
Dit werkt misschien in VB wel op deze manier maar in ASP gaat dat niet hoor.

Not all chemicals are bad. Without hydrogen or oxygen, for example, there would be no way to make water, a vital ingredient in beer.


  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
zie onderstaand script

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        dim objRequest : set objRequest = Server.CreateObject("Msxml2.SERVERXMLHTTP")
            call objRequest.Open("GET", url, false)
            call objRequest.Send("")
            
            While objRequest.readyState <> 4
                call objRequest.waitForResponse(1)
            Wend
            
            dim strStream : strStream = objRequest.responseBody
            
        set objRequest = nothing
        
        dim objStream : set objStream = Server.CreateObject("ADODB.Stream")
            objStream.type = 1 'binary
            call objStream.Open()
            call objStream.Write(strStream)
            
                call objStream.saveToFile(Server.MapPath(filePath), 2) '2=adSaveCreateOverWrite
            
            call objStream.Close()
        set objStream = nothing

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


  • Nutcaze
  • Registratie: Oktober 1999
  • Laatst online: 02-04 22:58
Heel goed bezig! Dat werkt. Bedankt. Ik had al een vermoeden dat het de ADODB.Stream was maar kwam er niet achter hoe 'm te gebruiken. Ik weet nog steeds precies waar het object nou precies voor dient maar dit werkt in ieder geval. Topic mag worden gesloten.

Not all chemicals are bad. Without hydrogen or oxygen, for example, there would be no way to make water, a vital ingredient in beer.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Nutcaze schreef op maandag 07 november 2005 @ 23:42:
Heel goed bezig! Dat werkt. Bedankt. Ik had al een vermoeden dat het de ADODB.Stream was maar kwam er niet achter hoe 'm te gebruiken. Ik weet nog steeds precies waar het object nou precies voor dient maar dit werkt in ieder geval. Topic mag worden gesloten.
Het is geen ADODB.Stream, maar gewoon een byte array/stream (en dan valt er te twisten over de benaming "stream", maar van mij mag je ;) ). Dat je ADODB gebruikt om die stream op te slaan is andere koek, maar het heeft er dus geen reet mee te maken.

[ Voor 10% gewijzigd door RobIII op 08-11-2005 03:02 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1