如何验证上传的文件是否仅为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
做一些事情。还请记住,此will会验证文件是否符合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);
}