Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Нужна помощь ESPAsyncWebServer бинарное содержимое

Тема в разделе "Общие вопросы по esp8266", создана пользователем CRM, 16 фев 2019.

  1. CRM

    CRM Новичок

    Сообщения:
    7
    Симпатии:
    0
    Доброго времени суток.
    Подскажите как с этим работать, и откуда берётся. На странице гитхаба описания не нашёл, есть только упоминание:
    me-no-dev/ESPAsyncWebServer

    //File: favicon.ico.gz, Size: 726
    #define favicon_ico_gz_len 726
    const uint8_t favicon_ico_gz[] PROGMEM = {
    0x1F, 0x8B, 0x08, 0x08, 0x0B, 0x87, 0x90, 0x57, 0x00, 0x03, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6F,
    0x6E, 0x2E, 0x69, 0x63, 0x6F, 0x00, 0xCD, 0x53, 0x5F, 0x48, 0x9A, 0x51, 0x14, 0xBF, 0x62, 0x6D,
    ...

    Допустить есть html страница, как я понял, чтоб её сжать, и передать по частям используется кодировка этой страницы в 16-ричный вид (0x). Чем это сделать или как. И обратим ли этот процесс, т.е. перевод этого "binary content" в читаемый вид.

    Пример файла во вложении.
     

    Вложения:

  2. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.198
    Симпатии:
    227
  3. Юрий Ботов

    Юрий Ботов Moderator Команда форума

    Сообщения:
    1.053
    Симпатии:
    175
    Сергей_Ф, Сдается мне у человека проблема не переводом страницы в хекс, а с пониманием как в принцыпе передаются бинарные данные через текстовый протокол...

    CRM, Объясните толком что нужно "на самом деле". Пример который вы представили - это только один из вариантов: что касается .jpg, .ico и т.п. - их можно тупо засушнуть в SPIFFS и на странице давать ссылки на эти файлы. А общая логика передачи бинарных данных через http такова: массив бинарных данных при передаче кодируется с использованием base64 (получается текст), а после приема производится обратное преобразование.
     
  4. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.198
    Симпатии:
    227
    @Юрий Ботов мне вообще непонятно, что именно нужно было, потому дал ссылку на то как преобразовать текст в hex. Зачем это надо @CRM не ясно, поскольку html есть текст и его никак никуда кодировать не надо по большому счету. Хочешь в PROGMEM пиши, хочешь в spiffs.
    Так кодировать при записи в PROGMEM имеет смысл только бинарные данные. Т.е. файлы изображения, что у автора в примерах и приведено. Такой способ позволяет обойти медленную файловую систему spiffs, но требует наличие обработчика для каждого изображения. Кажется, @Алексей. даже пример приводил.
    А вот что имелось ввиду под передачей по частям страницы - вообще непонятно.
     
    Последнее редактирование: 17 фев 2019
    Юрий Ботов нравится это.
  5. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.198
    Симпатии:
    227
  6. CRM

    CRM Новичок

    Сообщения:
    7
    Симпатии:
    0
    Спасибо за улыбку, но это первым делам что сделал. И если бы не получалась лабуда (ϛϗϠWfavicon.icoНS_HϪQЏbm) при обратном преобразовании, то не спрашивал бы.

    Юрий, есть проект, который мне понравился и хотел бы его немного доработать и использовать в своих домашних модулях, но веб интерфейс в виде 16ти-ричной последовательности. Для доработки его необходимо перевести в читаемый вид, но при использовании конвертеров HEX to ASCII (или текст) выдаёт не читаемый набор символов.
    К примеру, таблица стилей, как её отредактировать? (файл из проекта во вложении)

    За ранее благодарю!!!!
     

    Вложения:

  7. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.198
    Симпатии:
    227
    это не лабуда - это бинарный файл favicon.ico, его текстовым редактором открывать не надо.
    это не файл. Это то что передаёт esp на запрос. После "декодирования" из HEX получается содержимое бинарного файла, скорее всего это стиль пожатый gzip. Но точно вы этого узнать не можете. Хотя и можете попытаться сохранить в p_bootstrap.min.css.gz и попробовать разархивировать.
    Соберите проект, обратитесь к esp браузером и посмотрите стили в режиме разработчика, если уж исходники недоступны. Это самый простой вариант.
     
  8. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    556
    Симпатии:
    64
    @CRM, У вас бутстрап пережат немножко ган-зипом, неудивительно, что после перевода из hex вы видите каку, я его экстрактнул слегка и из 10146 байтов он превратился в 72393 байта
    dl,h1,h2,h3,h4,h5,h6,ol,p,pre,ul{margin-top:0}address,dl,ol,p,pre,ul{margin-bottom:1rem}...
    вполне себе читаемый вид, но код довольно плотный, впрочем как у всех собранных фреймворков библиотек, таких как бутстрап джиквери ангуляр и т.п. Для чтения не очень подходит ;)
     
    CRM нравится это.
  9. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    556
    Симпатии:
    64
    Если хотите понять какие данные в файле, попробуйте для начала проверить сигнатуру.
    Например для bmp файлов первые 2 байта 0x42 0x4d, для GZ первые 3 байта 0x1F 0x8B 0x08
    те самые 3 байта что в первом посте.
     
    CRM нравится это.
  10. CRM

    CRM Новичок

    Сообщения:
    7
    Симпатии:
    0
    Сергей, в том то и дело, что вытащить могу, но не всё в первозданном виде, например шаблон страницы, которая формируется исходя из данных.

    Алексей, экстракт верный, начальный строки тоже.
    Поясните пожалуйста, как его перевести в gz. Распаковать уже сам смогу, в читабельный вид тоже переведу?
    Я так понял, для упаковки и конвертации последовательность обратная?

    У всех первые 3 байта 0x1F 0x8B 0x08
     
  11. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    556
    Симпатии:
    64
    Как файл (или какие то данные) зажать ган-зипом?
    Самым простым способом gzip -cf my-file.css > my-file.css.gz
    или если вам удобно пользоваться ОС винтовс то на повершеле System.IO.Compression.GzipStream
     
    CRM нравится это.
  12. CRM

    CRM Новичок

    Сообщения:
    7
    Симпатии:
    0
    Алексей, Это я знаю, я мил ввиду, HEX > GZip

    Я пробую так, беру данные вида: 0x1F, 0x8B, 0x08, 0x08, 0x0B, 0x87, 0x90 ...
    Фильтрую их от 0X и запятых с пробелами
    Полученные данные вида 1F8B08080B8790... вставляю в конвертер HEX > ASCII
    То что выдаёт конвертер вставляю в файл с расширение gz
    Пробую распаковать, на этом этапе ошибка архива
     
  13. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    556
    Симпатии:
    64
    Просто я в поиске первую ссылку тыкнул и вставил содержимое вашего файла, без деклараций const uint8_t bootstrap_css[] PROGMEM = { и };
    файл сохранил и только. ;)
     
    CRM нравится это.
  14. CRM

    CRM Новичок

    Сообщения:
    7
    Симпатии:
    0
    Чувствую себя дураком, несколько раз был на этом сайте, даже стыдно стало. :oops:
    Спасибо вам большое за разъяснение!!!
     
  15. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    556
    Симпатии:
    64
    Objects in mirror are closer than they appear.
    Бывает, иногда не замечаешь очевидное и теряешь время, если вас не тролят и дали подсказку - вам повезло.
     
  16. CRM

    CRM Новичок

    Сообщения:
    7
    Симпатии:
    0
    Ещё раз благодарю, с вашей подсказкой во всем разобрался! ;)
     

Поделиться этой страницей