Мы перешли с Windows Server 2003 на Windows Server 2008, и наш сценарий FileSystemObject больше не работает. Всякий раз, когда мы пытаемся скачать файл размером 10-12 Мб, получается короткая загрузка, то есть: иногда получается только 15, 19 или 22 Мб из файла 26 Мб.
Сервер настроен на загрузку более 40 МБ без проблем, и это было подтверждено прямыми загрузками по http в файл на корневом уровне ... тесты прямой загрузки на 32 МБ проходят успешно в 100% случаев. Однако нам нужно обеспечить загрузку файлов, которые хранятся ниже root, поэтому нам нужно использовать скрипт FSO.
Мы успешно использовали этот сценарий в течение нескольких лет на Windows Server 2003, но в последнее время мы не можем получить полную загрузку с Windows Server 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
Я тщательно изучил эту тему в другом месте, и каждый пример сценария загрузки FSO дает сбой, даже при использовании фрагментов для любого файла размером более 4 МБ.