После некоторого тестирования с кодом ниже я пришел к такому выводу:загрузить большие файлы MKV с PHP скрипт
- Сценарий прекрасно подходит для AVI файлов как светлячок и хром работает (если я изменить тип содержимого к видео/avi, конечно)
- Скрипт отлично работает для файлов MKV в Chrome. Firefox выдает сообщение об ошибке на моем лице (см. Ниже)
- Я загрузил большой тестовый файл размером 20 мб (test7.mkv) от http://matroska.org/downloads/test_w1.html, чтобы протестировать его с меньшим файлом. Странно Firefox может загрузить этот файл, и он, похоже, работает. Однако, если я попробую его на большом файле размером 6 ГБ, я получаю ошибку firefox, которую вы видите ниже.
- Редактирование: Загружен файл 700 МБ, который вообще не играл в SM-проигрывателе (exitcode 1), но отлично играл в VLC-проигрывателе. В настоящее время я ищу способ найти, как и где файл может быть поврежден.
Мой очевидный вопрос: что я делаю неправильно? Как правильно загрузить файл mkv в firefox или лучше в любом общем браузере, если на то пошло. Я не могу найти что-нибудь полезное в Google, но, возможно, я просто искал не те места.
Firefox Ошибка при попытке загрузить MKV файл:
Поврежденный Содержание Ошибка
Страница, которую вы пытаетесь просмотреть, не может быть показано, так как была обнаружена ошибка в передаче данных.
Страница, которую вы пытаетесь просмотреть, не может быть показана, поскольку обнаружена ошибка в передаче данных. Пожалуйста, свяжитесь с владельцами сайта , чтобы сообщить им об этой проблеме.
function download($file)
{
$path = $_SERVER['DOCUMENT_ROOT']; //<-- added the relative part after that
$fullPath = $path.$file;
set_time_limit(0);
if ($fd = fopen ($fullPath, "r"))
{
$fsize = filesize($fullPath);
$path_parts = pathinfo($fullPath);
$ext = strtolower($path_parts["extension"]);
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: video/x-matroska");
header("Content-Disposition: attachment; filename=\"$file\"");
header("Content-Transfer-Encoding: binary");
header("Content-length: $fsize");
$file = @fopen($fullPath,"rb");
if ($file)
{
while(!feof($file))
{
print(fread($file, 1024*8));
flush();
if (connection_status()!=0)
{
@fclose($file);
die();
}
}
@fclose($file);
}
exit;
}
}
Просмотрите исходный код поврежденного файла. Вероятно, вы найдете сообщение об ошибке PHP. –
какой файл, не настраивая заголовок, как это, просто попросит пользователя загрузить файл в $ filePath? Браузер говорит мне, что файл поврежден. Я не получаю никаких php-сообщений. – wacki
Загруженный файл. Загляните внутрь. –