珞珈山水BBS电脑网络程序人生 → 单文区文章阅读

单文区文章阅读 [返回]
发信人: PowerQ (PowerQ), 信区: Programm
标  题: 请教一个Asp.net文件下载的问题
发信站: BBS 珞珈山水站 (Mon Nov 28 10:33:10 2005)

这是一个ASP.net支持断点续传的例子,但有点小问题如下:


Dim iStream As System.IO.Stream
        Dim buffer(10240) As Byte
        Dim length As Int16
        Dim dataToRead As Long

        Dim filepath As String = "D:\Setup Packet\MATLAB.ISO"
        Dim filename As String = System.IO.Path.GetFileName(filepath)


        iStream = New System.IO.FileStream(filepath, System.IO.FileMode.Open, 
System.IO.FileAccess.Read, System.IO.FileShare.Read)
        Response.Clear()

        dataToRead = iStream.Length

        Dim p As Long
        p = 0

        If Request.Headers("Range") <> "" Then
            Response.StatusCode = 206
            p = Long.Parse(Request.Headers("Range").Replace("bytes=", "").Re
place("-", ""))
        End If
        If p <> 0 Then
            Response.AddHeader("Content-Range", "bytes " & p & "-" & dataToR
ead - 1 & "/" & dataToRead & "")
        End If

        Response.AddHeader("Content-Length", (dataToRead - p).ToString())
        Response.ContentType = "application/octet-stream"
        Response.AddHeader("Content-Disposition", "attachment; filename=" + Sy
stem.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(filename)))

        iStream.Position = p
        dataToRead = dataToRead - p

        While dataToRead > 0
            If Response.IsClientConnected Then '为社么客户端浏览器在下载了一半

                                              后点击取消,服务器在这里就停止了
?
                length = iStream.Read(buffer, 0, 10240)
                Response.OutputStream.Write(buffer, 0, length)
                Response.Flush()

                dataToRead = dataToRead - length
            Else
                dataToRead = -1
            End If
        End While

        iStream.Close()
        Response.End()

请高手指点啊
--

※ 修改:·PowerQ 於 Nov 28 10:35:18 2005 修改本文·[FROM: 202.114.102.*]
※ 来源:·珞珈山水BBS站 http://bbs.whu.edu.cn·[FROM: 202.114.102.*]
[返回单文区目录]

武汉大学BBS 珞珈山水站 All rights reserved.
wForum , 页面执行时间:5.160毫秒