#javascript #java #smartgwt #lzma
Вопрос:
Я сжимаю свое изображение (в строковом формате base64) на стороне клиента с помощью LZMA-JS, а затем отправляю сжатый массив байтов на сервер. Там я хочу распаковать массив байтов и сохранить его в базе данных.
Код клиента:
LZMA.compress(base64Img, 9, function on_compress_complete(result) { imageCallback(result); }, function on_compress_progress_update(percent) { console.log("Compressing: " (percent * 100) "%"); });
Я попытался использовать LZMACompressorInputStream и LZMA2InputStream на сервере для распаковки одного и того же, но оба дают исключение «org.Pukalani.xz.CorruptedInputException: Сжатые данные повреждены».
Код на Стороне Сервера:
private byte[] decompressByteArray(final byte[] bytes) throws IOException { try (final ByteArrayOutputStream os = new ByteArrayOutputStream();) { final ByteArrayInputStream in = new ByteArrayInputStream(bytes); final LZMACompressorInputStream gis = new LZMACompressorInputStream(in); final byte[] buffer = new byte[1024]; int len; while ((len = gis.read(buffer)) != -1) { os.write(buffer, 0, len); } gis.close(); return os.toByteArray(); } catch (final IOException e) { log.error("error", e); return new ByteArrayOutputStream().toByteArray(); } }
Существует ли какой-либо другой способ распаковки массива байтов? У меня есть около 30 изображений в формате base64, которые я хочу отправить одним звонком, есть ли какой-либо другой способ отправить их.
Комментарии:
1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.