/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
hent fil fra url og gem den på disk
Fra : Leif Neland


Dato : 08-02-07 08:48

En webserver generer et billede ud fra parametrene i url'en.

Det vil jeg gerne gemme lokalt.

Jeg har prøvet med at klistre et par kodebidder sammen:


Dim objHttp
Dim imagebin

Set objHttp = Server.CreateObject("WinHTTP.WinHTTPRequest.5.1")
objHttp.Open "GET", "http://www.xxx/cgi-bin/yyy.exe?data="&hest, False
objHttp.Send
imagebin = objHttp.ResponseText

set link = nothing

set f=Server.CreateObject("ADODB.Stream")
f.Type=adTypeBinary
f.Open
f.Write imagebin
/* f.write giver fejlen
ADODB.Stream error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in
conflict with one another.
*/
BinaryStream.SaveToFile "e:/stinavn/"&hest&".gif",adSaveCreateOverWrite

set f=nothing

Præver jeg med f.WrifeText imagebin får jeg i stedet fejlen
ADODB.Stream error '800a0c93'

Operation is not allowed in this context.



Så hvad kan man så gøre?



Leif



 
 
Christoffer (11-02-2007)
Kommentar
Fra : Christoffer


Dato : 11-02-07 20:10

"Leif Neland" <leif@neland.dk> skrev i en meddelelse
news:45cad597$0$8708$edfadb0f@dread14.news.tele.dk...
> En webserver generer et billede ud fra parametrene i url'en.
>
> Det vil jeg gerne gemme lokalt.
>
> Jeg har prøvet med at klistre et par kodebidder sammen:
>
> Dim objHttp
> Dim imagebin
>
> Set objHttp = Server.CreateObject("WinHTTP.WinHTTPRequest.5.1")
> objHttp.Open "GET", "http://www.xxx/cgi-bin/yyy.exe?data="&hest, False
>
> <kode>
>
> Så hvad kan man så gøre?
>

Jeg ved ikke hvorfor din kode ikke virker med det komponent du prøver at
bruge, men jeg har fået det du prøver på til at virke med FileSystemObject.
Følgende virker hos mig:

strhttp = GetHttp("http://cht.dk/banner1.gif")

filedata = mid(strhttp,Instr(strhttp,VbCrLf&VbCrLf)+len(VbCrLf&VbCrLf))
filedata = StringToBinary(filedata)

FileName = Server.Mappath("myfile.gif")
tmp = WriteToFile(FileName,filedata)

Function StringToBinary(S)
Dim i, ByteArray
For i=1 To Len(S)
ByteArray = ByteArray & ChrB(Asc(Mid(S,i,1)))
Next
StringToBinary = ByteArray
End Function

Function WriteToFile(strFileSpec,bstrPostData)
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.CreateTextFile(strFileSpec, True)
intStartPos = 1
intEndPos = len(bstrPostData)
For i = intStartPos To intEndPos - 1
ts.Write(Chr(AscB(MidB(bstrPostData, i, 1))))
Next
ts.Close
End Function

Med venlig hilsen Christoffer



Christoffer (11-02-2007)
Kommentar
Fra : Christoffer


Dato : 11-02-07 20:16

"Christoffer" <nomail@nospam.com> skrev i en meddelelse
news:45cf6879$0$49208$14726298@news.sunsite.dk...
> "Leif Neland" <leif@neland.dk> skrev i en meddelelse
> news:45cad597$0$8708$edfadb0f@dread14.news.tele.dk...
> > En webserver generer et billede ud fra parametrene i url'en.
> >
> > Det vil jeg gerne gemme lokalt.
> >
> > Jeg har prøvet med at klistre et par kodebidder sammen:
> >
> > Dim objHttp
> > Dim imagebin
> >
> > Set objHttp = Server.CreateObject("WinHTTP.WinHTTPRequest.5.1")
> > objHttp.Open "GET", "http://www.xxx/cgi-bin/yyy.exe?data="&hest, False
> >
> > <kode>
> >
> > Så hvad kan man så gøre?
> >
>
> Jeg ved ikke hvorfor din kode ikke virker med det komponent du prøver at
> bruge, men jeg har fået det du prøver på til at virke med
FileSystemObject.
> Følgende virker hos mig:
>
> strhttp = GetHttp("http://cht.dk/banner1.gif")
>
> filedata = mid(strhttp,Instr(strhttp,VbCrLf&VbCrLf)+len(VbCrLf&VbCrLf))
> filedata = StringToBinary(filedata)
>
> FileName = Server.Mappath("myfile.gif")
> tmp = WriteToFile(FileName,filedata)
>
> Function StringToBinary(S)
> Dim i, ByteArray
> For i=1 To Len(S)
> ByteArray = ByteArray & ChrB(Asc(Mid(S,i,1)))
> Next
> StringToBinary = ByteArray
> End Function
>
> Function WriteToFile(strFileSpec,bstrPostData)
> Set fs = CreateObject("Scripting.FileSystemObject")
> Set ts = fs.CreateTextFile(strFileSpec, True)
> intStartPos = 1
> intEndPos = len(bstrPostData)
> For i = intStartPos To intEndPos - 1
> ts.Write(Chr(AscB(MidB(bstrPostData, i, 1))))
> Next
> ts.Close
> End Function

Der var lige smuttet en fejl ind i den sidste funktion, det skal være
således:

Function WriteToFile(strFileSpec,bstrPostData)
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.CreateTextFile(strFileSpec, True)
intStartPos = 1
intEndPos = len(bstrPostData)*2
For i = intStartPos To intEndPos
ts.Write(Chr(AscB(MidB(bstrPostData, i, 1))))
Next
ts.Close
End Function

Med venlig hilsen Christoffer



Christoffer (11-02-2007)
Kommentar
Fra : Christoffer


Dato : 11-02-07 20:35

"Christoffer" <nomail@nospam.com> skrev i en meddelelse
news:45cf6a0c$0$49198$14726298@news.sunsite.dk...
> > > En webserver generer et billede ud fra parametrene i url'en.
> > >
> > > Det vil jeg gerne gemme lokalt.
> > >
> > > Jeg har prøvet med at klistre et par kodebidder sammen:
> > >
> > > Dim objHttp
> > > Dim imagebin
> > >
> > > Set objHttp = Server.CreateObject("WinHTTP.WinHTTPRequest.5.1")
> > > objHttp.Open "GET", "http://www.xxx/cgi-bin/yyy.exe?data="&hest,
False
> > >
> > > <kode>
> > >
> > > Så hvad kan man så gøre?
> > >
> >
> > Jeg ved ikke hvorfor din kode ikke virker med det komponent du prøver at
> > bruge, men jeg har fået det du prøver på til at virke med
> FileSystemObject.
> > Følgende virker hos mig:
> >
> > strhttp = GetHttp("http://cht.dk/banner1.gif")
> >
> > filedata = mid(strhttp,Instr(strhttp,VbCrLf&VbCrLf)+len(VbCrLf&VbCrLf))
> > filedata = StringToBinary(filedata)
> >
> > FileName = Server.Mappath("myfile.gif")
> > tmp = WriteToFile(FileName,filedata)
> >
> > Function StringToBinary(S)
> > Dim i, ByteArray
> > For i=1 To Len(S)
> > ByteArray = ByteArray & ChrB(Asc(Mid(S,i,1)))
> > Next
> > StringToBinary = ByteArray
> > End Function
> >
> > Function WriteToFile(strFileSpec,bstrPostData)
> > Set fs = CreateObject("Scripting.FileSystemObject")
> > Set ts = fs.CreateTextFile(strFileSpec, True)
> > intStartPos = 1
> > intEndPos = len(bstrPostData)
> > For i = intStartPos To intEndPos - 1
> > ts.Write(Chr(AscB(MidB(bstrPostData, i, 1))))
> > Next
> > ts.Close
> > End Function
>
> Der var lige smuttet en fejl ind i den sidste funktion, det skal være
> således:
>
> Function WriteToFile(strFileSpec,bstrPostData)
> Set fs = CreateObject("Scripting.FileSystemObject")
> Set ts = fs.CreateTextFile(strFileSpec, True)
> intStartPos = 1
> intEndPos = len(bstrPostData)*2
> For i = intStartPos To intEndPos
> ts.Write(Chr(AscB(MidB(bstrPostData, i, 1))))
> Next
> ts.Close
> End Function
>

Det ser ud til at det skal være sidst nævnte ved hentning af en binær fil og
hvis det er en tekst-fil skal det være følgende. Den her er måske lidt
omstændig set i forhold til at det kun er tekst, hvilket vil sige at det kan
gøres mere enkelt.

Function WriteTextToFile(strFileSpec,bstrPostData)
Set fs = CreateObject("Scripting.FileSystemObject")
Set ts = fs.CreateTextFile(strFileSpec, True)
intStartPos = 1
intEndPos = len(bstrPostData)*2+1
For i = intStartPos To intEndPos
ts.Write(Chr(AscB(MidB(bstrPostData, i, 1))))
Next
ts.Close
End Function

Med venlig hilsen Christoffer



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408186
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste