我有一个扩展名为xlsx的文件,现在如果我将其扩展名更改为png,那么有没有办法获得该文件的实际内容类型,即xlsx。出于某些安全原因,我必须确定它。必须限制图像文件以外的文件。但是用户可以在重命名后上传文件,因为我通过扩展名检查文件。请帮忙。
我这样做了:----- final MimetypesFileTypeMap fileTypeMap = new MimetypesFileTypeMap();
System.out.println( fileTypeMap.getContentType("/home/ist-48/Downloads/report.png"));
实际报告是一个xlsx文件..但它返回:--- image / png
答案 0 :(得分:0)
您可以在下面的库中找到相同的内容
答案 1 :(得分:0)
是的,POI提供的一组新接口适用于这两种类型。
使用WorkbookFactory.create()方法获取工作簿:http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/WorkbookFactory.html
您可以使用以下方法检查excel文件,而不依赖于文件扩展名(不可靠 - 许多csv文件具有xls扩展名,但无法通过POI解析):
//simple way to check for both types of excel files
public boolean isExcel(InputStream i) throws IOException{
return (POIFSFileSystem.hasPOIFSHeader(i) || POIXMLDocument.hasOOXMLHeader(i));
}