Поддержка Dart Read для двоичных файлов

в разделе Dart:io есть пример кода для Http-сервера.

Теперь буду раздавать образы с этого сервера. Для этого я читаю запрошенный файл изображения и отправляю его содержимое клиенту через request.response.write().

Проблема заключается в формате прочитанных данных: либо я читаю файл изображения как 16-битную строку, либо как байтовый массив. Ни один из них не совместим с необработанным 8-битным массивом, который я должен отправить клиенту.

Кто-нибудь может мне помочь?


person Alex R.    schedule 14.06.2013    source источник
comment
И что именно не так с массивом байтов (byte=8bit)? Типом является только List‹int›, потому что нет байтового типа данных, возможные значения в списке по-прежнему находятся в диапазоне от 0 до 255. Я думаю, что ваша проблема заключается в использовании write() вместо writeCharCode()   -  person MarioP    schedule 14.06.2013
comment
Большое спасибо за указание на функцию записи. На самом деле, writeCharCode добавляет неправильный байт в начало данных изображения. Вместо этого я использовал request.response.write() для отправки изображения, и это сработало. С уважением   -  person Alex R.    schedule 17.06.2013


Ответы (1)


В классе ответа существует несколько видов методов записи.

  1. записывать
  2. написатьCharCode
  3. Добавить

В то время как «запись» записывает данные «как видно», «writeCharCode» преобразует данные обратно в необработанный формат. Однако writeCharCode добавляет в начало некоторый «магический байт» (C2), поэтому он искажает данные.

Другая функция, называемая add( List ‹ int > ), обрабатывает результат readAsBytes по желанию.

С уважением, Алекс

person Alex R.    schedule 17.06.2013