繁体   English   中英

确定java中上传文件的文件类型/扩展名

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM