В PHP выводить в виде массива байтов и потока. Какой из них лучше?

#php #service #stream #bytearray

#php #Обслуживание #поток #массивы

Вопрос:

мне нужно написать веб-службу php для вывода файла в клиентское приложение Windows. У меня есть два варианта выбора: массив байтов и потоковая передача. Какой из них лучше и его легко реализовать на PHP?

Спасибо за вашу помощь.

Комментарии:

1. что вы подразумеваете под массивом байтов и потоковой передачей?

2. Я могу отправить файл клиенту как ByteArray или передать его потоковой передачей

Ответ №1:

Как насчет просто….

 $file = 'some_file.exe';

$_size = filesize($_file);
header('Content-Type: binary/octet-stream');
header('Content-Length: '.$_size);
header('Content-Disposition: attachment; filename="' . basename($file) . '"; size=" . $_size);

@readfile($file);
  

Примечание: однако смотрите комментарий о некоторых проблемах с двоичными файлами.

Комментарии:

1. Вы должны использовать readfile вместо echo редактирования прочитанного содержимого. Я не думаю, что это действительно то, о чем просит OP.

2. @deceze: Это забавно (и, вероятно, из-за усталости) file() Сначала я подумал (знал, что это неправильно), а затем перешел к file_get_contents() . readfile() это, вы правы, лучший вариант. Однако я скорее просто показывал, что вы должны выполнять комбинацию между заголовками и выводимым содержимым, чтобы получить желаемый результат.