2011-04-13 85 views
0

我有兩個圖像clear.jpg和thumbclear.jpg,第二個是縮略圖我 從第一個用下面的代碼創建: 我沒有做任何調整尚未Azure的BLOB和縮略圖

Bitmap bitmap = new Bitmap(File.InputStream); 
    MemoryStream st = new MemoryStream(); 
    try 
    { 
    bitmap.Save(st, ImageFormat.Png); 
    return st; 
    } 
    finally 
    { 
    bitmap.Dispose(); 
    } 

所以我上傳兩個圖像blob,我得到他們的URI並複製/粘貼到 瀏覽器。 第一個 http://127.0.0.1:10000/devstoreaccount1/media/e1a987d1-c731-4e26-9e6c-d7a63b62f661/clear.png 工作正常,

但第二個http://127.0.0.1:10000/devstoreaccount1/media/b7ba6428-9db4-4282-8991-7a8198e7126f/thumbclear.png 使我有以下錯誤:

的圖片:「http://...thumbclear.png」無法顯示,因爲它包含錯誤。

因此,我認爲它與位圖流有關。 任何幫助將不勝感激。

* *編輯 我用它來保存BLOB

public static CloudBlob SaveFileToBlob(MemoryStream stream, string blobContainerName, string filename, string extension, string contentType, int fileSize) 
     { 
      if (stream != null) 
      { 
       CloudBlobContainer _BlobContainer = SessionHelper.GetBlobContainer(blobContainerName); 
       var permissions = new BlobContainerPermissions(); 
       permissions.PublicAccess = BlobContainerPublicAccessType.Container; 
       _BlobContainer.SetPermissions(permissions); 

       Guid blobid = Guid.NewGuid(); 
       var blob = _BlobContainer.GetBlobReference(blobid.ToString() + "/" + filename); 
       blob.UploadFromStream(stream); 

       blob.Metadata["FileName"] = filename; 
       blob.Metadata["Extension"] = extension; 
       blob.Metadata["FileSize"] = fileSize.ToString(); 
       blob.SetMetadata(); 

       blob.Properties.ContentType = contentType; 
       blob.SetProperties(); 

       return blob; 
      } 
      else 
       return null; 
     } 
+0

感謝zynaps我發現 - 無論是請提供此評論爲答案,或刪除的問題。 – Stuart 2011-04-13 09:24:36

+0

也確保流關閉和處置 – Turowicz 2014-06-10 16:02:55

回答

7

的解決方案是上傳到BLOB之前設置流位置設置爲0的代碼。

stream.Position = 0; 
blob.UploadFromStream(stream); 
0

對於第一個樣本:

Bitmap bitmap = new Bitmap(File.InputStream); 
    MemoryStream st = new MemoryStream(); 
    try 
    { 
    bitmap.Save(st, ImageFormat.Png); 


//worked for me 
     Response.ContentType = "image/png"; 
     st.WriteTo(Response.OutputStream); 
//-- 


    } 
    finally 
    { 
    bitmap.Dispose(); 
    } 

和今天

Function Index() As FileContentResult 
    Dim Resim = New WebClient().DownloadData("https://dosyalar.blob.core.windows.net/dosya/kartalisveris.gif") 
    Return New FileContentResult(Resim, "image/png") '* With {.FileDownloadName = "Höbölö"} 
End Function