gpt4 book ai didi

asp.net 文件下载 - 跟踪下载大小

转载 作者:可可西里 更新时间:2023-11-01 15:11:48 26 4
gpt4 key购买 nike

我正在尝试使用 ASP.net/C# 为类似的系统设计一个系统。

用户为下载某些内容(文件-mp3s/PDFs、doc 等)付费。我应该能够跟踪用户下载的字节数。如果下载的字节数与服务器上的字节数匹配,我应该在数据库中设置一个标志(告诉他们下载成功并防止他们再次下载文件/要求他们再次为下载付费)。如果下载不完整,他们应该能够再次下载文件而无需再次付费(因为不会设置标志)。

有什么方法可以跟踪客户端成功下载的字节数吗?

此外,当我在我的 WinXP 机器上看到一个文件大小时,我看到两个大小(大小,磁盘上的大小)。我应该考虑哪一个?它会因操作系统而异吗?

最佳答案

假设您将直接由 IIS 控制的下载替换为您自己的下载,您可以轻松地测量传递给 ASP.NET 中的客户端的数据,这将是这样的:

while (context.Response.IsClientConnected) {

bytesRead = ReadFileChunkAsByteArrayWIthOffsetOrWhatever(buffer, offset);

context.Response.OutputStream.Write(buffer, 0, bytesRead);
context.Response.Flush();

offset += bytesRead;

if (bytesRead != bufferSize)
break;
}

要在 ASP 中做到 100% 可靠是很复杂的,但可以做到。您几乎必须考虑到每个可能的故障点并做出相应的 react 。

但问题仍然是 - 正如上面提到的那样 - 不可能知道客户端收到了数据。如果这笔交易涉及金钱,那很快就会成为一个问题。

因此,最好的方法是使用自定义下载客户端,例如亚马逊用于购买 MP3 文件的客户端。这样一来,您就不会让自己或您的客户受制于通过像 HTTP 这样不可靠的东西移动货币化位的变幻莫测。

关于asp.net 文件下载 - 跟踪下载大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1958574/

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