#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()
это, вы правы, лучший вариант. Однако я скорее просто показывал, что вы должны выполнять комбинацию между заголовками и выводимым содержимым, чтобы получить желаемый результат.