我已经进行了一些谷歌搜索,但到目前为止还没有找到答案。
问题:在 java 后端,检查文件是否确实符合您的预期。例如,上传的 jpg 文件带有 pdf 扩展名...是否有一个可用的 jar 可以让我验证该文件是否实际上是其扩展名指示的文件类型?
最佳答案
Apache Tika 似乎是最好的。示例:
import java.io.File;
import java.io.FileInputStream;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.ContentHandler;
public class Main {
public static void main(String args[]) throws Exception {
FileInputStream is = null;
try {
File f = new File("C:/Temp/mime/test.docx");
is = new FileInputStream(f);
ContentHandler contenthandler = new BodyContentHandler();
Metadata metadata = new Metadata();
metadata.set(Metadata.RESOURCE_NAME_KEY, f.getName());
Parser parser = new AutoDetectParser();
// OOXMLParser parser = new OOXMLParser();
parser.parse(is, contenthandler, metadata);
System.out.println("Mime: " + metadata.get(Metadata.CONTENT_TYPE));
System.out.println("Title: " + metadata.get(Metadata.TITLE));
System.out.println("Author: " + metadata.get(Metadata.AUTHOR));
System.out.println("content: " + contenthandler.toString());
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (is != null) is.close();
}
}
}
示例取自:http://www.rgagnon.com/javadetails/java-0487.html
在那里你可以找到更多示例,他们还提供了包含示例所有 jasr 的 zip ;) http://www.rgagnon.com/examples/demo-tika-libs.zip
关于Java后端文件类型验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45849058/