[英]determine file type/extension of uploaded file in java
我试图找出一种方法来确定我在struts2应用程序中上传的文件的文件类型。 我的应用程序可以读取CSV和XML文件,并根据上载的文件类型执行操作。 我将该文件作为“文件”类的实例。 该文件永远不会复制到系统上。
我想知道如何确定上传文件的类型/内容。 我尝试了以下代码,看看我是否得到了文件类型:
String extension = FilenameUtils.getExtension(file.getAbsolutePath);
logging扩展名为“tmp”。 我该怎么做才能获得文件扩展名?
如果使用Java 7,则可以使用Files.probeContentType()
。 它没有受到扩展的诱惑......
JDK有许多文件格式被识别为默认格式; 这对你来说已经足够了。
否则,它是可扩展的!
用法:
Files.probeContentType(file.toPath().toAbsolutePath())
检查以下库: http : //jmimemagic.sourceforge.net/index.html
应该是你需要的那个。 您也可以考虑以下评论 ,其中涵盖了许多此类图书馆。
实际上所有类似Unix的现代系统都有file
实用程序,它根据数据库( /etc/magic
或/usr/share/file/magic
)检查给定的文件内容并报告其类型。 但是这种方法涉及对外部系统功能的依赖,这可能是您无法访问的。
尝试这个:
public static void main(String[] args) {
File f = new File("d:/sample.txt");
System.out.println(getExtention(f.getAbsolutePath()));
}
public static String getExtention(String file){
if(null == file || !file.contains(".")){
return null;
}else{
return file.substring(file.lastIndexOf("."));
}
}
我找到了解决方案。 因为我使用struts,我只需要创建一个新的setter方法。 如果文件对象是X,我必须创建一个setter方法
setXFileName(String fileName){
this.xFileName = fileName;
}
其余的是struts
你可以试着从中获得扩展
private String getFileExt(File file) {
String name = file.getName();
try {
return name.substring(name.lastIndexOf("."));
} catch (Exception e) {
return "";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.