Впервые реализован Telerik RadUpload control - PullRequest
1 голос
/ 10 января 2012

Я реализую telerik RadUpload в своем веб-приложении asp.net. Я добавил соответствующие записи обработчика и модуля в web.config.

<add path="Telerik.RadUploadProgressHandler.ashx"
   type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" validate="false" />
<add name="RadUploadModule"
   type="Telerik.Web.UI.RadUploadHttpModule" />

У меня есть функция, с помощью которой мне нужно загрузить файл Excel, и мне нужно видеть индикатор выполнения при загрузке, пока он не завершится на 100%.

ПРОБЛЕМА: Мне интересно, как получить процент загруженного файла и показать его в Progressarea.

МОЙ КОД (Button_Click):

    Const total As Integer = 100

        Dim progress As RadProgressContext = RadProgressContext.Current
        progress.Speed = "N/A"
        Dim files As UploadedFileCollection = RadUpload1.UploadedFiles
        Dim up As RadUpload = RadUpload1
        If files IsNot Nothing AndAlso 0 <> files.Count Then
            For i As Integer = 0 To total - 1
             progress("SecondaryTotal") = total.ToString()
                progress("SecondaryValue") = i.ToString()
                progress("SecondaryPercent") = i.ToString()
                progress("CurrentOperationText") = files(0).GetName() & " is being processed..."

            If Not Response.IsClientConnected Then
                      Exit For
            End If
            progress.TimeEstimated = (total - i) * 100

            ---------ACTUAL UPLOAD FUNCTIONALITY HERE----------
             objUpload.CreateBulkUploadRequest(bytes)

           Next
        End If

Private Sub CreateBulkUploadRequest(bytes)

     StoreDocumentinImageServer(bytes)

End Sub

 Public Function StoreDocumentinImageServer(ByVal PostData As Byte()) As Integer

        Try

            Dim req As HttpWebRequest
            Dim resp As HttpWebResponse
            Dim postStream As Stream
            Dim respStream As StreamReader
            Dim Url As String
            Dim response As String = String.Empty
            Dim ImageId As Integer = 0
            Dim qryString As New StringBuilder("?fileSize=")
            qryString.Append(PostData.Length)
            qryString.Append("&userId=" + RequestedBy.ToString)
            qryString.Append("&applicationName=" + RequestType.ToString)
            qryString.Append("&imageName=" + FileName)
            qryString.Append("&mode=Insert")
            Url = ImageServiceUrl + qryString.ToString
            req = CType(WebRequest.Create(Url), HttpWebRequest)
            req.Method = "POST"
            req.ContentType = contenttype
            req.KeepAlive = True
            req.ContentLength = PostData.Length
            postStream = req.GetRequestStream()
            postStream.Write(PostData, 0, PostData.Length)
            resp = CType(req.GetResponse(), HttpWebResponse)
            respStream = New StreamReader(resp.GetResponseStream(), Encoding.Default)
            response = respStream.ReadToEnd()
            respStream.Close()
            resp.Close()

        Catch ex As Exception
            Throw ex
        End Try
    End Function

ПРОБЛЕМА ---- Теперь метод CreateBulkUploadRequest() является синхронным, его загрузка займет 10 минут и, наконец, выйдет из выполнения метода. Теперь подумайте, как мне обновить область прогресса и процент загрузки файла.

Моя самая большая проблема - CreateBulkUploadRequest () находится в цикле обновления кода индикатора выполнения. поэтому он вызывает столько раз, сколько пытается обновить область прогресса.

Я ДЕЙСТВУЮ, ПРАВИЛЬНО ????????

Пожалуйста, дайте мне знать, если мой вопрос не ясен.

Ждем любых предложений.

Ответы [ 2 ]

0 голосов
/ 12 января 2012

Если вы просто используете RadUpload и область прогресса для проверки загруженного%, то вам не требуется никакого дополнительного кода в коде позади. Код (разметка), упомянутый в этой демонстрации , должен быть достаточным.

Однако, если вам нужен какой-то пользовательский мониторинг прогресса, который, кажется, вы делаете с предоставленным кодом, вам нужно будет сделать это немного по-другому. Эта демонстрация описывает, как должен быть реализован пользовательский мониторинг прогресса. Я бы дважды проверил, что реализованный вами код совпадает с примером из этой демонстрации.

0 голосов
/ 10 января 2012

Вам не нужно самостоятельно обрабатывать информацию о прогрессе, это должно быть сделано автоматически.Посмотрите этот пример кода .

...