gpt4 book ai didi

asp-classic - ASP Classic,下载大文件在某些​​服务器上不起作用

转载 作者:行者123 更新时间:2023-12-04 03:07:54 26 4
gpt4 key购买 nike

我有以下脚本,它在本地运行良好(Windows 10 IIS、Windows 2003 Server),但不适用于我们的托管服务器(Windows 2003 Server)。任何超过 4mb 的下载都会非常慢,然后在到达文件末尾之前超时。但是,在本地,它下载快速且完整。

直接下载(链接到文件本身)会在 5 秒内从我们的托管服务提供商服务器下载一个 26.5mb 的文件。因此,下载限制不存在问题。托管服务器和此脚本似乎存在问题。有任何想法吗?

Response.AddHeader "content-disposition","filename=" & strfileName
Response.ContentType = "application/x-zip-compressed" 'here your content -type

Dim strFilePath, lSize, lBlocks
Const CHUNK = 2048
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

最佳答案

只是看一下代码片段,它似乎很好,并且是我用来下载大文件的方法(尤其是使用 Response.IsClientConnected )。

然而话虽如此,很可能正在读取的块的大小与文件的大小有关。

非常粗略的公式是这样的......

time to read = ((file size / chunk size) * read time) 

因此,如果我们使用您的 4 MB 文件示例(4194304 字节)并说读取每个块需要 100 毫秒,那么以下适用;
  • 2048 字节 (2 KB) 的块大小将需要大约。 3分钟阅读。
  • 20480 字节 (20 KB) 的块大小将需要大约。 20秒阅读。

  • IIS 7 及更高版本上的经典 ASP 页面有一个默认值 scriptTimeout 00:01:30所以在上面的例子中,一个 4 MB 的文件在 2 KB 块中以 100 毫秒的速度不断读取将在脚本完成之前超时。

    现在这些只是粗略的统计数据,您的读取时间不会一直保持不变,而且可能快于 100 毫秒(取决于磁盘读取速度),但我认为您明白了。

    所以只需尝试增加 CHUNK .

    Const CHUNK = 20480 'Read in chunks of 20 KB

    关于asp-classic - ASP Classic,下载大文件在某些​​服务器上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39131191/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com