Лицом к Java.util.zip.zipexception: только дефтируемые записи могут иметь дескриптор EXT с извлечением Zip с помощью netJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Лицом к Java.util.zip.zipexception: только дефтируемые записи могут иметь дескриптор EXT с извлечением Zip с помощью net

Сообщение Anonymous »

У меня есть приложение в Котлине, архитектура Spring Boot Microservices. Я использую метод для принятия Bytearray в API, который принимает Zip в качестве байтона, а внутри Zip будут доступны документы. Я извлекаю этот Zip, чтобы получить от него документы (также с вложенной структурой каталогов). Мы используем следующую библиотеку для выполнения Zip Extraction < /p>

net.lingala.zip4j:zip4j:2.1.2образное.java.util.zip.ZipException: only DEFLATED entries can have EXT descriptor
< /code>
Примечание. Поддерживается метод сжатия. < /p>
Вот фрагмент кода для справки < /p>
fun extractZipFromBase64(zip: ByteArray, ndId: String) {
val requestData = repository.findOneById(ndId) ?: throw Exception("no records found.")
requestData?.let { nummer ->
val detailsData = processRequestClient.getDetails(nummer)
val zis = ZipInputStream(zip.inputStream())
try {
var zipEntry: ZipEntry?
while ((zis.nextEntry.also { zipEntry = it }) != null) {
if (zipEntry?.isDirectory == true) {
logger.info { "Processing file: ${zipEntry?.name} for $ndId" }
} else {
extracteFileFromZip(zipEntry, zis, nummer, detailsData)
}
}

} catch (e: Exception) {
logger.error(e) { "Error occurred while performing upload from zip to data for ndId: $ndId" }
throw Exception("Error occurred while performing upload from zip to data for ndId: $ndId")
} finally {
zis.close()
}
} ?: throw Exception("no records found: $ndId")
}

private fun extracteFileFromZip(
zipEntry: ZipEntry?,
zis: ZipInputStream,
akteZip: Boolean,
nummer: String,
dataRest: DataRest
) {
logger.info { "File Name: ${zipEntry?.name}" }
val bos = ByteArrayOutputStream()
try {
val buffer = ByteArray(1024)
var bytesRead: Int
while ((zis.read(buffer).also { bytesRead = it }) != -1) {
bos.write(buffer, 0, bytesRead)
}
val blob = bos.toByteArray()
val contentType = getMimeTypeFromExtension(zipEntry?.name!!)
saveDocument(nummer, zipEntry, contentType, blob, dataRest)
} catch (e: Exception) {
logger.error(e) { "Error occurred extracteFileFromZip file: ${zipEntry?.name}" }
throw Exception("Error occurred while fetching file: ${zipEntry?.name}")
} finally {
bos.close()
}
}

private fun saveDocument(
nummer: String,
zipEntry: ZipEntry?,
contentType: String,
blob: ByteArray,
dataRest: DataRest) {
//internal logic to save blob - byteArray data
}

private fun getMimeTypeFromExtension(relativePath: String): String {
val extension = FilenameUtils.getExtension(relativePath).lowercase(Locale.getDefault())
return when (extension) {
"pdf" -> MediaType.APPLICATION_PDF_VALUE
"png" -> MediaType.IMAGE_PNG_VALUE
"jpg" -> MediaType.IMAGE_JPEG_VALUE
"jpeg" -> MediaType.IMAGE_JPEG_VALUE
"doc" -> "application/msword"
"docx" -> "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
"xml" -> MediaType.APPLICATION_XML_VALUE
"eml" -> "message/rfc822"
"xlsx" -> "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
"txt" -> MediaType.TEXT_PLAIN_VALUE
else -> MediaType.APPLICATION_OCTET_STREAM_VALUE
}
}
< /code>
Как исправить проблему сжатия и как дать поддержку множественным методам сжатия с помощью этой библиотеки? Или можно извлечь файлы без таких ошибок < /p>
Примечание. Мы использовали < /p>

commons-io-2.14.0образное. lingala.zip4j к последней версии, если поддерживается этот метод сжатия. Или можно извлечь файлы без таких ошибок

Подробнее здесь: https://stackoverflow.com/questions/794 ... descriptor
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Android ZipInputStream: только записи DEFLATED могут иметь дескриптор EXT
    Гость » » в форуме JAVA
    0 Ответы
    16 Просмотры
    Последнее сообщение Гость
  • Android ZipInputStream: только записи DEFLATED могут иметь дескриптор EXT
    Гость » » в форуме Android
    0 Ответы
    13 Просмотры
    Последнее сообщение Гость
  • Вызвано: java.util.zip.ZipException: заголовок zip END не найден
    Гость » » в форуме Android
    0 Ответы
    51 Просмотры
    Последнее сообщение Гость
  • Вызвано: java.util.zip.ZipException: заголовок zip END не найден
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Вызвано: java.util.zip.ZipException: заголовок zip END не найден
    Anonymous » » в форуме Android
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»