2017-06-17 35 views
0

因此,我正致力於將一個Web應用程序移動到Azure,讓我絆倒的是如何處理圖像上傳。目前,我正在處理上傳與ImageResizer並將其保存到一個目錄:將圖像上傳到Azure的ASP.NET Web Form應用程序轉換爲

Protected Function DoHeaderUpload() As Guid? 
    If HeaderUploadControl.HasFile Then 
     If HeaderUploadControl.PostedFile.ContentType.StartsWith("image/") Then 
      If HeaderUploadControl.PostedFile.ContentLength < 3145728 Then ' 3MB max size 
       Dim myFileGuid = System.Guid.NewGuid() 
       Dim i As ImageResizer.ImageJob = New ImageResizer.ImageJob(HeaderUploadControl.PostedFile, 
                      "~/Images/Headers/" & myFileGuid.ToString() & ".jpg", 
                      New ImageResizer.Instructions("height=100;format=jpg;mode=crop")) 
       i.Build() 
       Return myFileGuid 
      Else 
       HeaderUploadError.Text = "<br>File exceeds 3MB maximum size" 
       HeaderUploadError.IsValid = False 
      End If 
     Else 
      HeaderUploadError.Text = "<br>Only image uploads are supported" 
      HeaderUploadError.IsValid = False 
     End If 
    End If 
End Function 

我發現了一個代碼片段將填充從內存流輸出一個blob從ImageResizer(link)。

但是,我有點不清楚如何在我的網站中嵌入/引用這些圖像。目前,我只是在做這個(例如):

HeaderImage.Src = String.Format("/Images/Headers/{0}.jpg", .HeaderImage.ToString()) 

我想我可以只包含完整的網址前綴BLOB,但是,似乎是一個壞主意(和測試在本地運行時會破事)。

我可以使用指向Azure文件共享而不是Azure Blob的虛擬路徑嗎?

我看到AzureReader2 for ImageResizer是誘人的,但它似乎超級昂貴。看起來這也可能是一個非常簡單的解決方案,因爲它看起來像自動重定向具有特定前綴的引用到Azure Blob位置。

我想問題是:什麼是最簡單的方法來做到這一點?我有種不同的選擇。

謝謝!

回答

0

我結束了使用解決方案,我在適當的URL前綴到達blob存儲。爲了讓本地和遠程工作,我添加了一個變換:

<appSettings> 
    <add key="BlobURLPrefix" value="http://myapp.blob.core.windows.net" 
     xdt:Locator="Match(key)" 
     xdt:Transform="SetAttributes(value)"/> 
</appSettings> 

然後,當我需要引用的圖片位置,我可以做這樣的事情:

FullUrl = ConfigurationManager.AppSettings("BlobURLPrefix") + ImagePath 

不完全是優雅的,但它很適合我的目的,而且很容易實現。

相關問題