случайный добавленный байт при загрузке файла php - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь загрузить двоичный файл с сервера, использующего PHP.Каким-то образом он случайным образом добавляет один байт в начало файла при загрузке:

Результат загрузки (изображение Hex-редактора):

Hex editor image

Ожидаемый результат загрузки (изображение Hex-редактора):

Что я пробовал:
1. Заголовки при попытке попробовать 1

$filename = 'spss-export.sav';
header("Content-Disposition: attachment; filename=survey_2_SPSS_syntax_file.sav");
header("Content-type: application/download; charset=UTF-8");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: public");
readfile($filename); // do the double-download-dance (dirty but worky)
exit;

2.Заголовок, попробуйте 2

$filename = 'spss-export.sav';
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"" . basename($filename) . "\"");
readfile($filename); // do the double-download-dance (dirty but worky)
exit;

3.Загрузка ответа Laravel

$filename = 'spss-export.sav';
return response()->download($filename);

Приближения заголовка создают файлы, в начале которых есть только случайный байт, но при приближении laravel случайный байт и один пропущенный байт в конце файла.Кто-нибудь знает в чем может быть проблема?

1 Ответ

0 голосов
/ 14 марта 2019

Сам нашел ответ: Вы должны добавить ob_end_clean () перед выводом файла.Платформа laravel каким-то образом добавляла дополнительное пространство для файлов.

Ссылка, если это не работает:
https://drupal.stackexchange.com/questions/163628/extra-space-at-beginning-of-downloaded-image/163644#163644

...