使用php脚本下载大型mkv文件

使用php脚本下载大型mkv文件,php,download,mkv,Php,Download,Mkv,在使用下面的代码进行了一些测试之后,我得出了以下结论: 当然,如果我将内容类型更改为video/AVI,那么该脚本对于firefox和chrome中的AVI文件都可以正常工作 该脚本适用于Chrome中的MKV文件。Firefox在我面前抛出一条错误消息,请参见下文 我从下载了一个20MB的大测试文件test7.mkv,然后用一个较小的文件进行测试。奇怪的是,Firefox可以下载这个文件,而且似乎可以正常工作。但是,如果我在一个6GB的大文件上尝试,我会得到下面的firefox错误 编辑:下载

在使用下面的代码进行了一些测试之后,我得出了以下结论:

当然,如果我将内容类型更改为video/AVI,那么该脚本对于firefox和chrome中的AVI文件都可以正常工作 该脚本适用于Chrome中的MKV文件。Firefox在我面前抛出一条错误消息,请参见下文 我从下载了一个20MB的大测试文件test7.mkv,然后用一个较小的文件进行测试。奇怪的是,Firefox可以下载这个文件,而且似乎可以正常工作。但是,如果我在一个6GB的大文件上尝试,我会得到下面的firefox错误 编辑:下载了一个700MB的文件,在SM播放器exitcode 1中根本没有播放,但在VLC播放器中播放得很好。我目前正在寻找一种方法,以找到如何以及在哪里该文件可能被损坏。 我明显的问题是:我做错了什么?如何在firefox中正确下载mkv文件,或者更好地在任何普通浏览器中下载。我在谷歌上找不到任何有用的东西,但也许我只是找错了地方

尝试下载mkv文件时出现Firefox错误:

损坏的内容错误

无法显示您试图查看的页面,因为检测到数据传输错误

无法显示您试图查看的页面,因为检测到数据传输错误。请与网站联系 业主通知他们这个问题

服务器上mkv文件的绝对路径

Firefox可能会阻塞文件名头值中的绝对路径

请尝试仅指定一个文件名:

 $filename = pathinfo($filePath, PATHINFO_BASENAME);
 header("Content-Disposition: attachment; filename=\"$filename\"");
解决方案:

我应该检查我定义的变量是否设置为预期值。结果表明filesize返回一个32位的有符号整数

现在我只使用了这里显示的函数:


另一种可能的解决方案是不定义内容长度标题。使用此解决方案,客户端将不知道下载需要多长时间。

查看受损文件的源代码。您可能会在其中找到一条PHP错误消息。哪个文件,不设置这样的头文件,只是提示用户在$filePath下载该文件?浏览器告诉我文件已损坏。我没有收到任何php消息。下载的文件。看看里面,$filePath包含了什么?你可能会在里面发现一条PHP错误消息——Firefox甚至没有走那么远,他只是给出了我上面发布的错误消息。因此,没有故障排除。
 $filename = pathinfo($filePath, PATHINFO_BASENAME);
 header("Content-Disposition: attachment; filename=\"$filename\"");