[英]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.