У меня есть следующий скрипт, который работает хорошо, локально (Windows 10 IIS, Windows 2003 Server), но не на нашем сервере хостинга (Windows 2003 Server). Anything over 4mb загрузится очень медленно, а затем таймаут, прежде чем он дойдет до конца файла. Однако, локально, он загружается быстро и полно.ASP Classic, загрузка больших файлов не работает на определенных серверах
Выполнение прямой загрузки (ссылка на файл) загружает файл 26.5mb за 5 секунд с нашего сервера хостинг-провайдера. Таким образом, с лимитом загрузки нет проблем. Кажется, проблема связана с сервером хостинга и этим скриптом. Есть идеи?
Response.AddHeader "content-disposition","filename=" & strfileName
Response.ContentType = "application/x-zip-compressed" 'here your content -type
Dim strFilePath, lSize, lBlocks
'Const CHUNK = 2048
' Thanks to Lankymart. I have set this and it download at 1.5MB a second, so that is running pretty well for what I need it to be.
Const CHUNK = 2048000
set objStream = CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1
objStream.LoadFromfile Server.MapPath("up/"&strfileName&"")
lSize = objStream.Size
Response.AddHeader "Content-Size", lSize
lBlocks = 1
Response.Buffer = False
Do Until objStream.EOS Or Not Response.IsClientConnected
Response.BinaryWrite(objStream.Read(CHUNK))
Loop
objStream.Close
Возможно проблема конфигурации IIS. Я считаю, что значение по умолчанию - 4 МБ ... – sgeddes
Как я уже говорил выше.Вы можете напрямую скачать файл, и он будет загружать большие файлы в кратчайшие сроки. Просто не со сценарием. –
Это все код на странице или это фрагмент? Может быть, что-то другое может привести к замедлению? Или как насчет увеличения размера куска? В качестве примера скажем, что требуется 100 миллисекунд для чтения одного фрагмента * (2048 байт) *, что означает, что для загрузки 4-мегабайтного файла потребуется около 3 минут, однако увеличение размера фрагмента до 20480 * (20 КБ) * будет только ок. 20 секунд, см. Разницу? – Lankymart