2011-08-16 82 views
2

我建立一個簡化的Web服務器,我能夠妥善處理髮送HTML頁面如何將圖像發送到瀏覽器

但是當我得到的圖像的請求,我的代碼不給瀏覽器的圖像

FileStream fstream = new FileStream(tempSplitArray[1],FileMode.Open,FileAccess.Read); 
//The tempSplitArray //recieves the request from the browser 
byte[] ar = new byte[(long)fstream.Length]; 
for (int i = 0; i < ar.Length; i++) 
{ 
    ar[i] = (byte)fstream.ReadByte(); 
} 
string byteLine = "Content-Type: image/JPEG\n" + BitConverter.ToString(ar); 
sw.WriteLine(byteLine);//This is the network stream writer 
sw.Flush(); 
fstream.Close(); 

請原諒我的無知,如果有任何問題,或者我的問題不夠清楚,請告訴我。

+0

你使用web窗體,這是你的處理程序代碼? – Baz1nga

+0

不,我正在構建一個控制檯應用程序,並且我通過鍵入http://127.0.0.1/index.html發送我的瀏覽請求。
該頁面具有圖像標記,因此瀏覽器發送請求以請求圖像,上面的代碼應該處理該請求,但它不是:( – Fingolfin

+0

[C#讀取Web請求中的圖像對象](http://stackoverflow.com/questions/939790/c-read-image-object-in - 網絡請求) [c#如何從request.binaryread寫一個jpg圖像](http://stackoverflow.com/questions/6715737/c-how-to-write-a-jpg-image -from-request-binaryread) 請做谷歌瀏覽器stackoverflow :) – bezigon

回答

1

基本上你想你的迴應是這樣的:

HTTP/1.1 200 OK 
Content-Type: image/jpeg 
Content-Length: *length of image* 

Binary Image Data goes here 

我假設swStreamWriter,但你需要編寫原料字節的圖像。

因此,如何:

byte[] ar; 
using(FileStream fstream = new FileStream(tempSplitArray[1],FileMode.Open,FileAccess.Read);) 
{ 
    //The tempSplitArray //recieves the request from the browser 
    ar = new byte[(long)fstream.Length]; 

    fstream.read(ar, 0, fstream.Length); 
} 

sw.WriteLine("Content-Type: image/jpeg"); 
sw.WriteLine("Content-Length: {0}", ar.Length); //Let's 
sw.WriteLine(); 
sw.BaseStream.Write(ar, 0, ar.Length); 

它確實有助於使用工具,如fiddler查看瀏覽器和一個(真實)Web服務器之間的通信,並嘗試複製這一點。

相關問題