ASP 에서 Adodb.stream 을 통 해 다 중 스 레 드 로 큰 파일 을 다운로드 합 니 다.
해적판 문 제 를 해 결 했 지만 새로운 문제 가 또 생 겼 다.Adodb.stream 같은 방식 의 컴퓨터 는 말 하기 도 쉽 지만 대부분의 컴퓨터 브 라 우 저 는 지원 합 니 다.모 바 일 브 라 우 저의 많은 브 라 우 저 들 이 읽 기 를 가속 화하 기 위해 다 중 스 레 드 다운로드 로 인해 파일 을 제대로 읽 을 수 없습니다.
클러치,HTTP 헤드 추가 발견 HTTPRANGE。전에 왕 대(왕 홍 영)의 에서 ASP 다 중 스 레 드 다운로드 문 제 를 언급 한 것 을 어렴풋이 기억 하고 집 으로 돌아 가 뒤 져 보 니 결국 해결 되 었 다.
호출 을 편리 하 게 하기 위해 서 직접 함수 로 썼 다.왕 대 코드 없 이 내 가 더 예 쁜 것 같 아.필요 한 친구 가 필요 하면 직접 가 져 가면 됩 니 다.코드 는 다음 과 같 습 니 다.
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
사용 도 매우 간단 합 니 다.위의 코드 가 다운 로 더 asp 에 저장 되 어 있다 면 직접 참조 하면 됩 니 다.
<!--#include file="downloader.asp"-->
<%
'
call CreateDownloader("down/tools.rar", "")
'
call CreateDownloader("down/tools.rar", "hello.rar")
%>
그림 도 있 고 진실 도 있다.ASP 에서 Adodb.stream 을 통 해 다 중 스 레 드 로 큰 파일 을 다운로드 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 ASP 다 중 스 레 드 로 큰 파일 을 다운로드 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
셸 스 크 립 트 (다 중 스 레 드 대량 생 성 사용자)예 를 들 어 백업 데이터 베 이 스 는 100 개의 라 이브 러 리 가 있 고 정상 적 인 백업 효율 이 매우 낮 습 니 다.다 중 스 레 드 가 있 으 면 백업 하 는 데 10 시간 이 걸 릴 수도 있 었 는데 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.