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

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

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


person jack 101    schedule 31.05.2011    source источник
comment
что вы подразумеваете под байтовым массивом и потоковой передачей?   -  person ideawu    schedule 31.05.2011
comment
Я могу отправить файл клиенту как ByteArray или передать его в потоковом режиме.   -  person jack 101    schedule 31.05.2011


Ответы (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);

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

person Brad Christie    schedule 31.05.2011
comment
Вы должны использовать readfile вместо echoобработки прочитанного содержимого. Я не думаю, что это действительно то, о чем просит ОП. - person deceze♦; 31.05.2011
comment
@deceze: Это забавно (и, вероятно, из-за усталости), я сначала подумал file() (знал, что это неправильно), а затем пошел к file_get_contents(). readfile(), вы правы, лучше подходит. Тем не менее, я просто показывал, что вы должны комбинировать заголовки и вывод контента, чтобы получить желаемый результат. - person Brad Christie; 31.05.2011