Отслеживание хода загрузки в Azure Blob Storage - PullRequest
0 голосов
/ 20 апреля 2020

Я создаю функцию загрузки файлов в Microsoft Azure Blob Storage с использованием VB. Net. Есть ли способ отслеживать ход передачи данных без использования библиотеки передачи данных Microsoft? Вот мой код:

Public Function isUploaded(ByVal filename As String) As Boolean
    Try



        Dim connectionString As String = "Connection String Here"
        Dim containerName As String = "uploads"


        Dim storageAccount As CloudStorageAccount = CloudStorageAccount.Parse(connectionString)
        Dim blobClient As CloudBlobClient = storageAccount.CreateCloudBlobClient()
        Dim container As CloudBlobContainer = blobClient.GetContainerReference(containerName)
        Dim blockBlob As CloudBlockBlob = container.GetBlockBlobReference(Path.GetFileName(filename).ToString)


        Using FileStream = System.IO.File.OpenRead(filename)
            blockBlob.UploadFromStream(FileStream)
            Return True
        End Using


    Catch ex As Exception
        Return False
        MsgBox(ex.Message)
    End Try
End Function

1 Ответ

1 голос
/ 21 апреля 2020

Если вы хотите узнать, сколько байт было загружено, вы можете использовать метод UploadFromStreamAsync в sdk Microsoft.Azure.Storage.Blob. Он будет обрабатывать класс StorageProgress, который содержит информацию о ходе передачи данных для потоков запросов и ответов в одной операции.

enter image description here

Например

 Sub Main()
        Dim fileName As String = "D:\\help.txt"
        Dim result = isUploaded(fileName).Result
        Console.WriteLine(result)
        Console.ReadLine()
    End Sub

    Public Async Function isUploaded(ByVal filename As String) As Task(Of Boolean)
        Try
            Dim connectionString As String = ""
            Dim containerName As String = "test"
            Dim storageAccount As CloudStorageAccount = CloudStorageAccount.Parse(connectionString)
            Dim blobClient As CloudBlobClient = storageAccount.CreateCloudBlobClient()
            Dim container As CloudBlobContainer = blobClient.GetContainerReference(containerName)
            Dim blockBlob As CloudBlockBlob = container.GetBlockBlobReference(Path.GetFileName(filename).ToString)
// Define the function how to handle the infromation
            Dim handelr As Action(Of StorageProgress) = Sub(progress) Console.WriteLine("Progress: {0} bytes transferred", progress.BytesTransferred)
            Dim progressHandler As IProgress(Of StorageProgress) = New Progress(Of StorageProgress)(handelr)
            Dim cancellationToken As CancellationToken = New CancellationToken()

            Using FileStream = File.OpenRead(filename)
                Await blockBlob.UploadFromStreamAsync(FileStream,
                                                       New AccessCondition(),
                                                       New BlobRequestOptions(),
                                                       New OperationContext(),
                                                       progressHandler,
                                                       cancellationToken)
                Return True
            End Using


        Catch ex As Exception
            Return False
            MsgBox(ex.Message)
        End Try
    End Function

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...