【发布时间】:2018-02-12 03:20:27
【问题描述】:
我有一个 System.Web.UI.WebControls.FileUpload 控件,它传递需要存储在 Azure Blob 存储中的 Word 和 PDF 文件。
从代码隐藏页面传递到公共库以管理 Azure Functions:
Private Sub UploadButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles UploadButton.Click
Dim fileExt As String = String.Empty
Dim newGuid As New Guid
Dim fileName As String
Dim documentType As Document.DocumentType
Page.Validate()
newGuid = Guid.NewGuid
If Page.IsValid() AndAlso Me.FileUploadNewDoc.HasFile Then
Try
'Test that MIME is either msword of pdf
If FileUploadNewDoc.PostedFile.ContentType.Contains("msword") Then
fileExt = "doc"
documentType = Document.DocumentType.LeaseWordDoc
ElseIf FileUploadNewDoc.PostedFile.ContentType.Contains("pdf") Then
fileExt = "pdf"
documentType = Document.DocumentType.LeasePDF
Else
fileExt = "na"
End If
If fileExt <> "na" Then
fileName = newGuid.ToString & "." & fileExt
AzureStorage.SaveBlob(FileUploadNewDoc.FileContent, fileName, mDocumentContainer, mStorageConnectionString)
End If
Catch ex As Exception
' Handle Error
Finally
FileUploadNewDoc.Dispose()
End Try
End If
End Sub
AzureStorage.SaveBlob 代码:
Public Function SaveBlob(ByRef fileContent As Stream,
ByVal fileName As String,
ByVal containerName As String,
ByVal storageConnectionString As String) As Boolean
Dim storageAccount As CloudStorageAccount = CloudStorageAccount.Parse(storageConnectionString)
Dim blobClient As CloudBlobClient = storageAccount.CreateCloudBlobClient()
Dim container As CloudBlobContainer = blobClient.GetContainerReference(containerName)
Dim blockBlob As CloudBlockBlob = container.GetBlockBlobReference(fileName)
Using fileContent
fileContent.Position = 0
blockBlob.UploadFromStream(fileContent)
End Using
Return True
End Function
我的问题:
- 这是获取已上传文件并将其保存到 Azure Blob 存储的最佳方式吗?
- 我是否正确处理了流?我正在传递 ByRef 并有一个围绕用法的 Using 语句。
- 在将内容保存到存储时是否应该明确设置内容类型?如果是这样,我该怎么做?
注意,我通常使用 C# 编写代码,因此如果您不熟悉 VB.NET,可以使用 C# 编写示例。
【问题讨论】:
标签: asp.net azure file-upload webforms azure-storage