zoukankan      html  css  js  c++  java
  • 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


  • 相关阅读:
    【读书笔记】iOS-类别
    【读书笔记】iOS-特性
    【读书笔记】iOS-对象初始化
    【读书笔记】iOS-内存管理
    iOS---类方法(静态方法)和实例方法
    iOS ---Extension编程指南
    Swift学习与复习
    iOS----Xcode6或者Xcode7设置LaunchImage图标
    iOS----------使用 Xcode6或Xcode7配置.pch文件
    iOS开发----优秀文章推荐
  • 原文地址:https://www.cnblogs.com/waynebaby/p/283411.html
Copyright © 2011-2022 走看看