Jakob Møbjerg Nielsen wrote in news:a2um4h$gaj$1@sunsite.dk:
>> Hvordan er det liiiiige man læse et billede binært?
>
> Som man normalt gør? Hvordan vil du hente et billede fra en hjemmeside,
> hvis du ikke må gøre det gennem HTTP?
præcist ... og derfor undrede jeg mig også over, hvorfor du talte om
TCP/IP :)
> BinaryWrite kan fx bruges til
> dynamisk generering af billeder, fx en graf.
>
Øh ... ok ... men altså:
På mit domæne ligger der et lille billede på
http://stocholm.dk/bg.gif .
Når min browser vil se dette billlede, så sker det via kommandoen
GET /bg.gif HTTP/1.0
Dette resulterer i:
open stocholm.dk 80
GET /bg.gif HTTP/1.0
Host: stocholm.dk
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Sun, 27 Jan 2002 10:59:59 GMT
Content-Type: image/gif
Accept-Ranges: bytes
Last-Modified: Fri, 25 Jan 2002 13:20:02 GMT
ETag: "c0e41ffa2a5c11:a72"
Content-Length: 213
GIF87aÞ?Ç3f3ff,Þ??¦îÅ®-Ýú£¦+ï¦Ì+¹åÔHûµëªÛ-¯;+LÎ÷ìþ·+¸¦Oyþ¶¦²Ä¤Ù¸³¥(8
h§gxêÿ¿©+ÏÞ?)¨AXiyëÖ®¦++ڨ¹-4IZjzèܬ¦-+Û*#+;K[k{ïø½+½¾Û¹?,<L\l|+ø¼+¦
_ý³?mY;
Hvis jeg derimod læser billedet ind i ADOs Stream-object med koden:
set oStream = server.createobject("ADODB.Stream")
oStream.Type = 1
oStream.Open
oStream.LoadFromFile (server.mappath("bg.gif"))
response.ContentType = "image/gif"
response.BinaryWrite oStream.Read
oStream.Close
set oStream = nothing
og derefter henter ASP-siden, så giver det mig:
open stocholm.dk 80
GET /bg.asp HTTP/1.0
Host: stocholm.dk
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Sun, 27 Jan 2002 10:57:14 GMT
Connection: Keep-Alive
Content-Length: 213
Content-Type: image/gif
Set-Cookie: ASPSESSIONIDQQGQGLQC=HLAHIEIAGBOGOMBFADGKFKPJ; path=/
Cache-control: private
GIF87aÞ?Ç3f3ff,Þ??¦îÅ®-Ýú£¦+ï¦Ì+¹åÔHûµëªÛ-¯;+LÎ÷ìþ·+¸¦Oyþ¶¦²Ä¤Ù¸³¥(8
h§gxêÿ¿©+ÏÞ?)¨AXiyëÖ®¦++ڨ¹-4IZjzèܬ¦-+Û*#+;K[k{ïø½+½¾Û¹?,<L\l|+ø¼+¦
_ý³?mY;
Et eller andet sted sker der altså en "oversættelse" at de 1 og 0, som
billedet er sat sammen af på min HD, til den streng af tegn, som er
ovenfor. Det jeg ikke kan finde ud af er, hvordan dette sker.
Er det en simpel "type-casting" af bitstrenge til en tekststreng ? Hvis
dette er tilfældet - er det så UTF-7 eller UTF-8 ?
Det ser ikke ud til, at det er MIME-kodet ... hvilket jeg faktisk havde
forventet. Iflg MSDN er den eneste forklaring jeg kan finde:
[...]The BinaryWrite method writes the specified information to the
current HTTP output without any character conversion. This method
is useful for writing non-string information such as binary data
required by a custom application.
[...]
Det er jo altsammen meget fint ... altså: headeren sættes på svaret
fra serveren, og derefter sendes indholdet af filen direkte som en del af
HTTP-output ...
men: arrgh ! ... hvordan ?
Og endelig: Jeg spurgte ikke til hvad man kan bruge den ... og spurgte til,
hvad der sker, når man bruger den. Det svarer lidt til, når vi har talt om
attachments til diverse mailkomponenter. Når man anvender dem, så sker der
det, at der tilføjes et par headers til emailen - herunder en
boundary-header, dernæst base64-kodes filen og skrives direkte i emailen
- under en af disse boundary-linier. Det er en tilsvarende beskrivelse
jeg er ude efter her. Jeg er ikke ude efter et svar som: "... Man bruger
den til at vedhæfte filer til emails ..."
:)
--
Jesper Stocholm -
http://stocholm.dk
Synes du også, at Britney trods alt er meget lækker - men dog
på grænsen til det kvalmende ?
http://stocholm.dk/britney.txt