2011-11-22 30 views
0

好吧,我一直在這個工作不停,並做了大量的搜索。從數據庫中拉出圖像時無法顯示圖像。如果我嘗試去手動處理鏈接,我會收到一條消息,指出「圖像[Image]無法顯示,因爲它包含錯誤」。我之前在數據庫中有一些舊圖像,並首先正確顯示這些圖像。但現在,如果我更新圖像,它會給我這個錯誤,當試圖查看它們。HttpHandler [Image]無法顯示,因爲它包含錯誤

上傳代碼。

if (fileuploadImage.HasFile) 
     { 
      if (IsValidImage(fileuploadImage)) 
      { 
       int length = fileuploadImage.PostedFile.ContentLength; 
       byte[] imgbyte = new byte[length]; 
       HttpPostedFile img = fileuploadImage.PostedFile; 
       img.InputStream.Read(imgbyte, 0, length); 

       if (mainImage == null) 
       { 
        ProfileImage image = new ProfileImage(); 
        image.ImageName = txtImageName.Text; 
        image.ImageData = imgbyte; 
        image.ImageType = img.ContentType; 
        image.MainImage = true; 
        image.PersonID = personID; 

        if (image.CreateImage() <= 0) 
        { 
         SetError("There was an error uploading this image."); 
        } 
       } 
       else 
       { 
        mainImage.ImageName = txtImageName.Text; 
        mainImage.ImageType = img.ContentType; 
        mainImage.ImageData = imgbyte; 
        mainImage.MainImage = true; 
        mainImage.PersonID = personID; 

        if (!mainImage.UpdateImage()) 
        { 
         SetError("There was an error uploading this image."); 
        } 
       } 
      } 
      else 
      { 
       SetError("Not a valid image type."); 
      } 

這裏是我的圖像處理程序:

public class ImageHandler : IHttpHandler 
{ 
    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 

    public void ProcessRequest(HttpContext context) 
    { 
     int imageid = Parser.GetInt(context.Request.QueryString["ImID"]); 
     ProfileImage image = new ProfileImage(Parser.GetInt(imageid)); 

     context.Response.ContentType = image.ImageType; 
     context.Response.Clear(); 
     context.Response.BinaryWrite(image.ImageData); 
     context.Response.End(); 
    } 

這是如何我稱它 「?〜/ ImageHandler.ashx IMID =」 + Parser.GetString(image.ImageID)

我正在使用數據類型圖像在sql服務器來存儲此。

編輯:

我還發現,如果我把周圍context.Response.end(一個嘗試catch)它示數出來說「無法評估的代碼,因爲本地幀...」

回答

0

我發現我的問題。我正在檢查實際文件的標題以確保它是有效的。不知何故,這改變了數據並使其變得糟糕。

+0

也許MemoryStream沒有被重置到原來的位置? –

相關問題