[英]Validate to check uploaded file is pdf
如何驗證上傳的文件是否僅為 PDF? 不僅通過擴展名(.pdf)而且還有內容。如果有人將任何其他文件的擴展名更改為 pdf 文件,那么它在上傳時應該會失敗。
為此,您可以使用 Apache Tika,可在此處獲得。 http://tika.apache.org/
您還可以在此處找到一個實際示例: https : //dzone.com/articles/determining-file-types-java
有很多方法可以驗證 PDF 文件。 我使用 itext 來檢查 pdf 是否已損壞。
try {
PdfReader pdfReader = new PdfReader(file);
PdfTextExtractor.getTextFromPage(pdfReader, 1);
LOGGER.info("pdfFileValidator ==> Exit");
return true;
} catch (InvalidPdfException e) {
e.printStackTrace();
LOGGER.error("pdfFileValidator ==> Exit. Error ==> " + e.getMessage());
return false;
}
如果文件不是 PDF 或文件已損壞,則會拋出InvalidPDFException 。 對於上面的示例,您需要 itext 庫。
您可以使用許多驗證庫來驗證文件是否符合 PDF。 例如,您可以使用-veradpf或pdfbox 。 當然,您可以使用任何其他可以為您完成工作的庫。 正如已經提到的, tika是另一個可以讀取文件元數據並告訴您文件是什么的庫。
作為一個例子(一個簡單的例子),你可以用pdfbox
做一些事情。 另請記住,這將驗證文件是否符合 PDF/A。
boolean validateImpl(File file) {
PreflightDocument document = new PreflightParser(file).getPreflightDocument();
try {
document.validate();
ValidationResult validationResult = document.getResult();
if (validationResult.isValid()) {
return true;
}
} catch (Exception e) {
// Error validating
}
return false;
}
或者使用 Tika,你可以做類似的事情
public ContentType tikaDetect(File file) {
Tika tika = new Tika();
String detectedType = tika.detect(file);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.