我有一个应用程序,正在上传 mp4 和 flv 视频文件。以防万一,如果用户将其他文件的扩展名更改为“mp4”/“flv”,则意味着文件已上传且视频未播放。如何在 java 中检查 mp4/flv 视频文件的 mime 类型。
我正在为此苦苦挣扎,请任何人帮助我完成这项任务。
最佳答案
如果您有 Java 7,那么您可以使用 Files.probeContentType(path)
。
import java.nio.file.*;
public class MimeTypes {
public static void main(String[] args) {
Path path;
try {
path = Paths.get("/etc");
System.out.println( path + " : " + Files.probeContentType(path) );
path = Paths.get("/dev/null");
System.out.println( path + " : " + Files.probeContentType(path) );
path = Paths.get("/var/log/syslog.2.gz");
System.out.println( path + " : " + Files.probeContentType(path) );
path = Paths.get("/var/run/rpcbind.sock");
System.out.println( path + " : " + Files.probeContentType(path) );
path = Paths.get("abc.mp4");
System.out.println( path + " : " + Files.probeContentType(path) );
path = Paths.get("MimeTypes.java");
System.out.println( path + " : " + Files.probeContentType(path) );
} catch (Exception x) {
}
}
}
输出:
# java MimeTypes
/etc : inode/directory
/dev/null : inode/chardevice
/var/log/syslog.2.gz : application/x-gzip
/var/run/rpcbind.sock : inode/socket
abc.mp4 : video/mp4
MimeTypes.java : text/x-java
Files
的 Oracle 文档是 here .
另一个选项: Apache Tika
Apache Tika 是一个工具包,用于使用现有的解析器库从各种文档中检测和提取元数据和结构化文本内容。 Tika 有很多依赖项……差不多有 20 个 jar !但它可以做的不仅仅是检测文件类型。例如,您可以解析 PDF 或 DOC 以非常轻松地提取文本和元数据。
public static void main(String args[]) throws Exception {
FileInputStream is = null;
try {
File f = new File("C:/Temp/mime/abc.mp4");
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();
}
}
关于java - 如何在java中查找视频文件的mime类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22601430/