Windows Server 2003 から Windows Server 2008 に移行したため、FileSystemObject スクリプトが機能しなくなりました。10 ~ 12 Mb のファイルをダウンロードしようとすると、ダウンロードが短くなります。つまり、26 Mb のファイルのうち 15、19、または 22 Mb しか取得できない場合があります。
サーバーは 40 Mb 以上のダウンロードを問題なく許可するように設定されており、これはルート レベルのファイルへの直接 http ダウンロードによって確認されています... 32 Mb での直接ダウンロードのテストは 100% 成功しています。ただし、ルートの下に保存されているファイルのダウンロードを提供する必要があるため、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
私はこのトピックを他の場所で集中的にチェックアウトしましたが、4 Mb を超えるファイルにチャンクを使用している場合でも、FSO ダウンロード スクリプトの例はすべて失敗します。