12
Фев
2018

Неизвестный формат у получаемого файла, octet-stream

Добрый вечер.

Столкнулся с такой проблемой: никак не удаётся получить файл с удалённого сервера. Какой формат файла - не известно (подозреваю, что json или xml, но кто ж его знает на самом деле).

Для начала запрашиваю файл.

$curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $q);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $b);
    $out = curl_exec($curl);
    //echo curl_error($curl);
    //print_r(curl_getinfo($curl));
    curl_close($curl);

Далее пошли танцы с бубном:

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($out));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($out));
ob_clean();
flush();
readfile($out);

В итоге получаю пустой файл без расширения. Однако сниффер ловит какой-то контент. Сохраняется он, если запрашивать на прямую, как байт-код:

789c ab56 4a2d 2aca 2f52 b2aa 564a ce4f
4955 b232 3432 30d4 514a 492d 4e56 b252
52aa ad05 00b2 7b0a 03

Далее, поиски привели меня к тому, что всё это дело заодно и сжато при помощи вот этой штуки

После прогона ответа от сервера через gzdecode() var_dump() говорит false. Отдаётся пустой файл, но с именем скрипта, на который отправляется, собственно, запрос.

Попытки поиграться с content-type в заголовках не привели ровно ни к чему.

Собственно, вопрос, возможно ли как-то всё таки узнать формат файла, и почему в итоге он становится пустым? В какую сторону копать? Заранее спасибо.

UPD

Провтыкал заголовок. Добавил curl_setopt($curl, CURLOPT_ENCODING , "gzip");

Стал возвращаться код файла. Сейчас буду пытаться распознать.

UPD 2.

И снова. Тип данных: двоичный файл.

Источник: https://ru.stackoverflow.com/questions/784093/%D0%9D%D0%B5%D0%B8%D0%B7%D0%B2%D0%B5%D1%81%D1%82%D0%BD%D1%8B%D0%B9-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D1%83-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B0%D0%B5%D0%BC%D0%BE%D0%B3%D0%BE-%D1%84%D0%B0%D0%B9%D0%BB%D0%B0-octet-stream

Тебе может это понравится...

Добавить комментарий