将 ASP.NET 个具有图像上传功能的 Web 表单应用程序转换为 Azure
Convert ASP.NET Web Form App with Image Uploads to Azure
所以我正在努力将 Web 应用程序移动到 Azure,而让我感到困惑的一件事是如何处理图像上传。目前,我正在使用 ImageResizer 处理上传并将它们保存到一个目录:
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
我找到了一段代码摘录,它将从 ImageResizer (link) 的内存流输出中填充一个 blob。
但是,我不太清楚如何 embed/reference 我网站上的这些图片。目前我只是这样做(例如):
HeaderImage.Src = String.Format("/Images/Headers/{0}.jpg", .HeaderImage.ToString())
我想我可以在 blob 中包含完整的 URL 前缀,但这似乎是个坏主意(并且当 运行 在本地进行测试时会破坏东西)。
我可以使用指向 Azure 文件共享而不是 Azure Blob 的虚拟路径吗?
我看到 AzureReader2 for ImageResizer 很诱人,但它似乎超级昂贵。这似乎也是一个非常简单的解决方案,因为它看起来会自动将具有特定前缀的引用重定向到 Azure Blob 位置。
我想问题是:最简单的方法是什么?我一直在考虑各种选择。
谢谢!
我最终使用的解决方案是在适当的 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
不完全优雅,但它相当适合我的目的并且很容易实现。
所以我正在努力将 Web 应用程序移动到 Azure,而让我感到困惑的一件事是如何处理图像上传。目前,我正在使用 ImageResizer 处理上传并将它们保存到一个目录:
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
我找到了一段代码摘录,它将从 ImageResizer (link) 的内存流输出中填充一个 blob。
但是,我不太清楚如何 embed/reference 我网站上的这些图片。目前我只是这样做(例如):
HeaderImage.Src = String.Format("/Images/Headers/{0}.jpg", .HeaderImage.ToString())
我想我可以在 blob 中包含完整的 URL 前缀,但这似乎是个坏主意(并且当 运行 在本地进行测试时会破坏东西)。
我可以使用指向 Azure 文件共享而不是 Azure Blob 的虚拟路径吗?
我看到 AzureReader2 for ImageResizer 很诱人,但它似乎超级昂贵。这似乎也是一个非常简单的解决方案,因为它看起来会自动将具有特定前缀的引用重定向到 Azure Blob 位置。
我想问题是:最简单的方法是什么?我一直在考虑各种选择。
谢谢!
我最终使用的解决方案是在适当的 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
不完全优雅,但它相当适合我的目的并且很容易实现。