У меня есть проект интеграции с системой ERP, который возвращает мне список счетов, сжатых с помощью zip, в виде двоичной строки:

Xc1NCsIwEEDhq0j2ZuIPCEWF4qqgNNCN2yFWGzAzMhmMvb1g0YUHeN / b1iI4tlcvkSXq2NCTY + hnr3SnvDOD6qMCyGHoE2Z7QcXApIJBLcsNls6twW1gyn3b1b6xB06Jyf6R2UxoFX9sKcWW1RdawPl07D6neaSsSKE3sH8D

Мне не удается извлечь его, я пытаюсь использовать gzuncompress(), new ArchiverZip() также пытаюсь преобразовать его из bin2hex, base64 ... и ничего, я должен получить объект из этой строки.

Ребята, которые разрабатывают ERP-систему, сказали мне, что они сжимают ее с помощью Ionic (??): Ionic.Zlib.DeflateStream.UncompressBuffer(compressedData);

Есть идеи ? Благодарность

0
user3146624 30 Дек 2013 в 18:17

2 ответа

Лучший ответ

Эти данные сжимаются с помощью raw deflate (без zlib, gzip или zip-оболочки вокруг данных deflate) и закодированы в base64. В декодированном и распакованном виде это:

<ArrayOfPriorityInvoice xmlns="http://schemas.datacontract.org/2004/07/PrioriPOSAPI.Common.PriorityInvoices" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"/>

Используйте base64_decode() и gzinflate() для извлечения данных.

1
Mark Adler 30 Дек 2013 в 17:01

Попробуйте прочитать строку с помощью file_get_contents

Затем запишите zip-файл в папку tmp, затем распакуйте его

Скажите, если вам нужны дополнительные объяснения

-1
Yazan Malkawi 30 Дек 2013 в 14:46