• asp.net常用的一个很好用的控制文件下载的函数 支持续传多线(控制多线请自行修改)


    可以控制文件大小 下载名称 单块数据大小 单块数据间隔 以及MIME类型 很好用


        
    Public Shared Function ResponseFile(ByVal _Request As HttpRequest, ByVal _Response As HttpResponse, ByVal _fileName As StringByVal _fullPath As StringByVal BlockSize As LongByVal sleep As IntegerOptional ByVal MIMEType As String = "application/octet-stream"As Boolean
            
    Try



                
    Dim myFile As New FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)

                
    Dim br As New BinaryReader(myFile)


                
    Try

                    _Response.AddHeader(
    "Accept-Ranges""bytes")
                    _Response.Buffer 
    = False
                    
    Dim fileLength As Long = myFile.Length
                    
    Dim startBytes As Long = 0




                    
    If (Not _Request.Headers("Range"Is NothingThen
                        _Response.StatusCode 
    = 206
                        
    Dim range() As String = _Request.Headers("Range").Split("=-".ToCharArray)
                        startBytes 
    = Convert.ToInt64(range(1))

                    
    End If

                    _Response.AddHeader(
    "Content-Length", (fileLength - startBytes).ToString())
                    
    If (startBytes <> 0Then
                        _Response.AddHeader(
    "Content-Range"String.Format(" bytes {0}-{1}/{2}", startBytes, fileLength - 1, fileLength))

                    
    End If
                    _Response.AddHeader(
    "Connection""Keep-Alive")
                    _Response.ContentType 
    = MIMEType
                    _Response.AddHeader(
    "Content-Disposition""attachment;filename=" + HttpUtility.UrlEncode(_fileName, System.Text.Encoding.UTF8))

                    br.BaseStream.Seek(startBytes, SeekOrigin.Begin)
                    
    Dim maxCount As Integer = CInt(Math.Floor((fileLength - startBytes) / BlockSize) + 1)
                    
    For i As Integer = 0 To maxCount - 1

                        
    If _Response.IsClientConnected Then
                            _Response.BinaryWrite(br.ReadBytes(BlockSize))
                            Thread.Sleep(sleep)

                        
    Else
                            i 
    = maxCount
                        
    End If

                    
    Next
                
    Catch ex As Exception

                    
    Return False
                
    End Try





            
    Catch ex As Exception

                
    Return False

            
    End Try
        
    End Function


  • 相关阅读:
    hibernate 多对多 最佳实践
    世界上速度最快的输入法 Fleksy 为了支持中国
    他们控制的定义-DragButton
    怎么样linux下的目录名的目录,系统用来操作空间
    无形的力量,看得见的手
    如何设置eclipse在默认模式下打开文件
    【比赛组织和共享源代码】那些红卫兵游戏
    [Oracle] 分析功能(1)- 语法
    SAP ABAP第一,两,三代出口型BADI实现 解释的概念
    JSP简单的练习-功能标签
  • 原文地址:https://www.cnblogs.com/waynebaby/p/283411.html
Copyright © 2020-2023  润新知