1

我的服务器上有一个脚本,它生成的内容作为要下载的文件发送给用户。问题是有时内容可能会有点长,有时通信可能会在下载过程中中断......在这种情况下,下载会停止并且到目前为止发送的内容会被保存。如果可以通知用户文件尚未完全下载以便他们再次尝试,这不会那么糟糕。但通常在用户方面似乎没有什么问题:浏览器只是简单地宣布“下载完成”!然后用户发现存在问题并且文件的一部分在他们实际尝试打开文件并使用它时才丢失(这为时已晚)。

那么有没有办法让服务器端脚本发送要由浏览器下载的文件,让浏览器在下载未完成的情况下显示错误?

顺便说一句,为了发送文件,我使用了这三个 HTTP 标头:

Content-Type: application/octet-stream
Content-Disposition: attachment; filename="MyFile.ext"
Content-Length: <no. of bytes>

我实际上可以提前知道内容的长度,并且浏览器在通知用户下载时实际上会向用户显示这个数字。但是,在下载正确的字节数之前下载完成时,浏览器什么也没说,我不能指望我的用户检查他们下载的文件的确切大小并将其与浏览器宣布的内容进行比较前。

在这种情况下,是否有浏览器配置会使浏览器宣布错误?或者是否有另一个我可以发送的 HTTP 标头(可能带有一些校验和或 CRC 或其他东西)会产生预期的效果?

任何帮助将非常感激!

编辑:这是一个简单的 PHP 代码,用于测试浏览器在下载量过小的情况下的行为:

<?php
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="test.txt"');
header('Content-Length: 300');
echo 'Will there be a warning?';

此代码将一个名为test.txt且据称长 300 字节的文件发送到浏览器以供下载。实际上内容要小得多。浏览器等待更多内容,然后放弃并宣布“下载完成”,没有任何警告。

4

0 回答 0