【发布时间】:2018-01-27 06:13:59
【问题描述】:
我有一个必须返回大文件(视频文件)的 isapi DLL(用 Delphi 制作)。所有这些视频文件都连接在一个物理文件(数据文件)中。因此,例如,如果用户请求文件#123,那么 isapi dll 将需要返回数据文件中从偏移量 $xx 到偏移量 $yy 的字节。
实际上我的问题是 它看起来像当我通过 EXTENSION_CONTROL_BLOCK WriteClient 发送它们时,我将偏移量 $xx 到偏移量 $yy 的所有字节加载到内存中
他们是不是一种不将所有字节加载到内存中并在用户客户端请求时增量返回的方法?
其实这是我的代码:
var Buffer: array[0..8191] of Byte;
AStream.Position := StartOffset;
while AStream.Position < EndOffset do begin
BytesToSend := AFileStream.Read(Buffer, SizeOf(Buffer));
MyEXTENSION_CONTROL_BLOCK.WriteClient(ECB.ConnID, @Buffer, DWORD(BytesToSend)
end
【问题讨论】:
-
没有代码很难说,你现在应该知道了:)
-
我只是添加代码,如果它可以帮助你..
-
这里可能有一些答案:stackoverflow.com/questions/9600856/…
-
感谢 dave,但我刚刚发现在 IIS 上它们是完美的解决方案:msdn.microsoft.com/en-us/library/ms525816(v=vs.90).aspx ...我将更新一些 delphi 的源代码来处理它