Проверка целостности документов

Какие шаги для проверки целостности этих документов? doc,docx,docm,odt,rtf,pdf,odf,odp,xls,xlsx,xlsm,ppt,pptm

Или, по крайней мере, некоторые из них. Обычно при загрузке в репозиторий контента.

Я предполагаю, что inputStream всегда правильно читается на 99,99% из http-запроса MultiPart, иначе будет сгенерировано исключение и предприняты действия. Но пользователь может загрузить уже поврежденный файл - я использую сторонние библиотеки для проверки этого? Я не видел ничего подобного в odftoolkit, itextpdf, pdfbox, apache poi или tika

4 ответа

Есть много видов "коррумпированных".

  • Некоторые повреждения должны легко обнаруживаться. Например, урезанный ODF-файл, скорее всего, потерпит неудачу при попытке открыть его, поскольку программа чтения ZIP не может его прочитать.

  • Других будет буквально невозможно обнаружить. Например, искажение в один символ в файле RTF будет невозможно обнаружить, и поэтому (я думаю) будет большинство усечений файла RTF.


Я был бы удивлен, если бы вы нашли один (бесплатный) инструмент для выполнения этой работы для всех этих типов файлов, даже если это технически возможно. Текущее поколение библиотек с открытым исходным кодом для чтения / записи форматов документов, как правило, сосредоточено только на одном семействе форматов. Если вы серьезно относитесь к этому, вам, вероятно, нужно использовать коммерческую библиотеку.

Для всех перечисленных выше форматов файлов есть сторонние библиотеки, которые могут открываться и т. Д. - я не знаю "только проверки", но я думаю, что возможность открывать их без исключений и т. Д. Является, по крайней мере, основной проверкой того, что файл находится в указанном формате... Одна такая (коммерческая) библиотека Aspose - не аффилированный, просто счастливый клиент...

Вы можете сделать контрольные суммы / хэши (то есть безопасные хэши) файла перед загрузкой, а затем загрузить контрольную сумму отдельно. Если впоследствии загруженный файл имеет такую ​​же контрольную сумму, он не был изменен (с некоторой высокой вероятностью, в зависимости от используемой контрольной суммы / хэша) от оригинала.

Перейдите, чтобы проверить проект LibreOffice (который уже обрабатывает эти архивы), в нем есть части, написанные на Java, и вы наверняка сможете найти и использовать их механизмы для проверки поврежденных файлов.

Я думаю, что вы можете получить код здесь:

http://www.libreoffice.org/get-involved/developers/

Другие вопросы по тегам