2013-08-08 2 views
0

Windows Server 2003 ro Windows Server 2008에서 옮겨서 FileSystemObject 스크립트가 더 이상 작동하지 않습니다. 우리가 10-12 Mb 파일을 다운로드하려고 시도 할 때마다 짧은 다운로드가 발생합니다 : 가끔은 26 Mb 파일의 15, 19 또는 22 Mb를 가져 오는 경우가 있습니다.Windows Server 2008에서 FileSystemObject 다운로드 스크립트가 실패합니다.

서버가 40MB 이상 아무런 문제없이 다운로드 할 수 있도록 설정되었으며 루트 수준의 파일로 직접 http 다운로드 한 것으로 확인되었습니다 ... 32MB의 직접 다운로드 테스트는 100 % 성공했습니다. 그러나 루트 아래에 저장된 파일의 다운로드를 제공해야하므로 FSO 스크립트를 사용해야합니다.

우리는 Windows Server 2003에서 몇 년 동안의 성공으로 스크립트를 사용했지만 요즘 우리는 내가 집중적 다른 곳에서이 주제를 체크 아웃 한 2008 년

strChunkSize = 1024000*1  
strDocFile = "someDocument.doc" 
FPath = "C:\data\" & strDocFile 
Response.Buffer = True 
Response.Clear 

Set adoStream = CreateObject("ADODB.Stream") 
adoStream.Open() 
adoStream.Type = 1 

on error resume next 

Set fso = Server.CreateObject("Scripting.FileSystemObject") 
Set fl = fso.GetFile(FPath) 
intFilelength = fl.size 

adoStream.LoadFromFile(FPath) 

Response.AddHeader "Content-Disposition", "attachment; filename=" & fl.name 
Response.AddHeader "Content-Length", intFilelength 
Response.AddHeader "Accept-Ranges", "bytes" 
Response.ContentType = "application/octet-stream" 

For i = 0 To adoStream.Size 
i = i + strChunkSize 
Response.BinaryWrite(adoStream.Read(strChunkSize)) 
Response.Flush 
Next 

adoStream.Close 
Set adoStream = Nothing 

Windows 서버에서 전체 다운로드 모든 예를 얻을 수 없다 4MB보다 큰 파일에 대해 청크를 사용하는 경우에도 FSO 다운로드 스크립트가 실패합니다.

+0

가 IIS에서 시간 제한 설정이 영향을 미칠 수를 해결하려면? – WilliamK

답변

0

이 경우의 문제는 기본적으로 스크립트 대기 시간이 90 초이므로 큰 파일이 중단되었습니다. 나는 다운로드에 비례 느린 코치 허용을 시간을 설정하는 몇 가지 스크립트를 추가 문제 ...

if strDocFileSize <> "" then 
strScriptTimeout = (strDocFileSize/1024000)*40 
else 
strScriptTimeout = 30000 
end if 

Server.ScriptTimeout = strScriptTimeout 
관련 문제