【问题标题】:First time implementing telerik RadUpload control第一次实现 Telerik RadUpload 控件
【发布时间】:2012-02-07 00:05:11
【问题描述】:

我正在我的 asp.net Web 应用程序中实现 Telerik RadUpload。我在 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%。

问题:我想知道如何捕获上传文件的百分比并将其显示在进度区域中。

我的代码(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() 在进度条更新代码的循环中。 因此它会调用尽可能多的次数来尝试更新进度区域。

我做得对吗????????

如果我的问题不清楚,请告诉我。

期待任何建议。

【问题讨论】:

    标签: asp.net ajax telerik radupload


    【解决方案1】:

    您不必自己处理进度信息的显示,它应该自动完成。看看this sample code

    【讨论】:

    • 对不起 M4N ,我试过你说的方式,它显示进度区域框,但没有用 % 上传更新进度条,这是我需要做的吗??????
    【解决方案2】:

    如果您只是使用 RadUpload 和进度区域来检查上传的百分比,那么您不需要在代码隐藏中添加任何其他代码。 this demo 中提到的代码(标记)就足够了。

    但是,如果您想要一些自定义进度监控,您似乎正在使用提供的代码进行此操作,您需要稍微不同地进行此操作。 This demo 涵盖了应该如何实施自定义进度监控。我会仔细检查您实现的代码是否与该演示中的示例保持一致。

    【讨论】:

    • 感谢 Carl 对我的问题表现出兴趣,实际上我的上传功能在 CreateBulkUploadRequest() 方法中,执行需要 10 分钟。而且我把它保存在for循环中以更新进度条,所以方法被执行了很多次。我不清楚如何在不循环并且不知道该方法的执行时间的情况下更新进度条....请让我理解,我已经看过你提供链接的演示,我遵循相同的示例并编写了上面的代码,他们正在使用线程,但是在这种情况下我该如何实现线程。
    • 我们如何知道正在上传的字节百分比,我正在使用 http post 将文件上传到其他服务器。虽然该过程发生在 CreateBulkUploadRequest(bytes) 方法中,但我必须获取完成的字节百分比并更新进度条。一个例子中的一些东西 .....progress["SecondaryTotal"] = nBytesTotalL.ToString();进度["SecondaryValue"] = nPercentCompleteL.ToString();进度["SecondaryPercent"] = Convert.ToInt16(nPercentCompleteL).ToString();
    • 第二个选项——当方法完成执行时,至少我的进度条应该结束,如果它没有给我完成的百分比也没关系。
    • 对于您的任何选项,您必须更新当前的值和百分比字段才能显示任何进度。从目前的情况来看,您在上传期间没有为这些字段提供额外的更新。您可以使用的一个选项是直接使用 InputStream,并在每个文件成功保存到您保存它们的任何位置后更新这些字段。有关更多信息,请参阅本文:telerik.com/help/aspnet-ajax/upload-manipulating-files.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    相关资源
    最近更新 更多