国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP教程 - ASP下通過Adodb.Stream實現多線程下載大文件

ASP下通過Adodb.Stream實現多線程下載大文件

2020-09-22 14:37苗啟源 ASP教程

這篇文章主要介紹了ASP下通過Adodb.Stream實現多線程下載大文件,需要的朋友可以參考下

有個朋友 做 某種小眾音樂交換站的(他們那個行業的昵圖網),需要用到付費下載。嘗試過 防盜鏈,不太理想,最終使用了 Adodb.Stream 讀取,直接輸出。

解決了 盜版的問題,但是新的問題又來了。Adodb.Stream 這種方式 電腦還好說,大部分電腦瀏覽器都支持。移動端 很多 瀏覽器為了 加速讀取,會多線程下載導致 文件無法正常讀取。

抓包,發現增加了 HTTP頭 HTTP_RANGE。隱約記得 之前讀過 王大(王洪影)的 《深入解析 ASP核心技術》當中提到ASP多線程下載的問題,回家翻出來,最終還就真解決了。

為了 方便調用,直接寫成了 一個 函數。沒用王大的代碼,感覺我自己的更美(自戀中…)。如有有需要的朋友需要,直接拿走即可,代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
option explicit
 
'inputFile 需要下載的文件
'outputName 輸出文件名,可以為空,為空時自動根據 inputFile 生成
Sub CreateDownloader(byval inputFile, byval outputName)
  Dim filePath
  filePath = Server.Mappath(inputFile)
  If outputName = "" Then outputName = Split(filePath, "")(UBound(Split(filePath, "")))
 
  '下載開始
  Dim AdoStream, bufferSize
  Set AdoStream = Server.CreateObject("Adodb.Stream") 'Adodb.Stream,實例變量名為了方便區分用大寫
  bufferSize   = 2 * 1024 * 1024 '每次讀取大小(byte) 2M
  AdoStream.Mode = 3 '1 讀,2 寫,3 讀寫
  AdoStream.Type = 1 '1 二進制,2 文本
  AdoStream.Open
  AdoStream.LoadFromFile(filePath) '載入文件
  Response.AddHeader "Content-Disposition", "attachment; filename=" & outputName '文件名
  Response.ContentType = "application/octet-stream" '通知瀏覽器接受的文件類型(可自己定義,很多種,但一般都用這個
 
  Dim httpRange,rangeStart,fileSize
  '獲取 分段下載 請求
  httpRange = Request.ServerVariables("HTTP_RANGE")
  fileSize = AdoStream.size '文件總大小
 
  If httpRange = "" Then
    '不支持斷點續傳
    rangeStart = 0
  Else
    '支持斷點續傳
    httpRange = Mid(httpRange, 7)
    rangeStart = CLng(Split(httpRange, "-")(0))
 
    If rangeStart < 0 Or rangeStart >= fileSize Then
      '已經下載完畢
      Response.Status = "416 Requested range not satisfiable"
    Else
      Response.Status = "206 Partial Content"
      Response.AddHeader "Content-Range", "bytes " & rangeStart & "-" & (fileSize - 1) & "/" & fileSize
      AdoStream.Position = rangeStart
    End If
 
  End If
 
  Dim binaryBlock
 
  If Response.Status <> "416 Requested range not satisfiable" Then
    Response.AddHeader "Content-Length", fileSize - rangeStart '通知瀏覽器接收的文件大小
    binaryBlock = AdoStream.Read(bufferSize)
 
    Do While Lenb(binaryBlock) > 0 '循環讀取直到讀完為止
      Response.BinaryWrite binaryBlock '輸出二進制數據流
      Response.Flush '立即發送(要求至少256字節),不加的話可能提示超過緩存區。
      binaryBlock = AdoStream.Read(bufferSize)
    Loop
 
  End If
 
  AdoStream.Close '關閉文件對象
  Set AdoStream = Nothing
  Response.End
End Sub

使用也非常簡單,假如上面的代碼保存到了 downloader.asp,直接引用即可:

?
1
2
3
4
5
6
7
8
<!--#include file="downloader.asp"-->
<%
  '創建下載
  call CreateDownloader("down/tools.rar", "")
   
  '創建下載并自定義文件名
  call CreateDownloader("down/tools.rar", "hello.rar")
%>

有圖有真相:

ASP下通過Adodb.Stream實現多線程下載大文件

到此這篇關于ASP下通過Adodb.Stream實現多線程下載大文件的文章就介紹到這了,更多相關ASP多線程下載大文件內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:http://www.miaoqiyuan.cn/p/asp-range-download

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 大象视频成人在线观看 | 色就是色网站 | 伊人春色网| av网站在线免费观看 | 天天躁日日躁狠狠躁 | 欧美精品一区二区三区在线播放 | 在线免费观看av电影 | 亚洲九九 | 国产黄色片免费 | 成人爽视频 | 99视频在线免费观看 | av中文字幕在线播放 | 日本在线视频免费观看 | 国产欧美精品一区二区三区 | 最新黄色网址在线播放 | 国产精品久久久久久久久久久久久 | 亚洲精品视频国产 | 欧美精品成人一区二区三区四区 | 欧美一区永久视频免费观看 | 日韩精品无 | 欧美一区二区三区黄色 | 亚洲精品久久久久久一区二区 | 亚洲电影天堂在线观看 | 久久亚洲网 | 麻豆av在线播放 | 91精品一区二区三区久久久久久 | 999精品视频一区二区三区 | 久久久亚洲 | 亚洲激情在线 | 国产精品久久久久久久久久久久久久久久 | 国产黄视频在线观看 | 黄视频免费观看 | 国产精品久久久久aaaa九色 | 91最新视频| 亚洲国产视频网 | 久久久久国产精品午夜一区 | 亚洲精品一| 久久综合久久综合久久综合 | 亚色在线| 国产成人欧美一区二区三区的 | 黄色在线免费看 |