gpt4 book ai didi

java - 在 Java 中识别文件类型

转载 作者:行者123 更新时间:2023-11-30 07:10:01 26 4
gpt4 key购买 nike

我想检查用户是否仅上传特定文件格式(比如仅文本文件)。

我写了一个验证机制来检查文件名后面的格式

filename.txt

但是,这在它接受其他文件(如 excel 文件)时产生了一个问题,这些文件保存为 .txt 之类的

myexcelfile.txt is being assumed as a text file even when it is an excel file

那么,要检查以确保上传的文件属于所需类型的唯一参数是什么?

使用 apache-commons uploader 、servlet。

======================编辑=====================

根据下面的答案,我试过了

FileInputStream my = new FileInputStream(uploadedFile2);
InputStream inputStream = new BufferedInputStream(my);
String mimeType = URLConnection.guessContentTypeFromStream(inputStream);

但总是返回空值。

probe content type基于文件扩展名并且 this approach 也存在错误,也检查过。

我不喜欢使用第三方文件 validator ,我相信这个问题会有一个合乎逻辑的解决方案。

最佳答案

Apache Tikacontent detection广泛的能力 file formats .根据文档,检测内容类型的最简单方法之一是基于以下代码:

// default tika configuration can detect a lot of different file types
TikaConfig tika = new TikaConfig();

// meta data collected about the source file
Metadata metadata = new Metadata();
metadata.set(Metadata.RESOURCE_NAME_KEY, f.toString());

// determine mime type from file contents
String mimetype = tika.getDetector().detect
(TikaInputStream.get(uploadedFile2), metadata);
System.out.println("File " + uploadedFile2 + " is " + mimetype);

如果 mimetypetext/plain,则文件或流包含纯文本内容。

关于java - 在 Java 中识别文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22554591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com