Распакуйте сжатый файл LZMA-JS на Java

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