我已经检查了答案在这里,但在这里,首先他们将其保存到某个地方,然后阅读它的流,并试图检查该文件的哑剧类型
Get real file extension -Java code
但我想知道的文件类型之前,甚至保存到硬盘或在一些地方。
我知道我可以用这两种方法
File savedFile = new File(fileHandler.createTodayFolder(fileLocation) + "/" + name);
Path path = Paths.get(file.get);
Tika tika = new Tika();
String checkType = tika.detect(path.toFile());
以及
Path path = Paths.get(savedFile.getPath());
Files.probeContentType(path)
但在这两种情况下,他们使用的是一些文件,这是已经在硬盘的一些位置。我想这样的代码
public @ResponseBody ResponseEntity<?> importResume(@RequestParam(value = "name", required = false) String name,
@RequestParam("file") MultipartFile file) {
if (file!=DESIRED_TYPE)
{
return Exception;
}
}
有什么办法可以做到吗???
9条答案
按热度按时间mfuanj7w1#
对我来说,最干净的解决方案:
使用www.example.com的文件名实用程序org.apache.commons.io:
r7s23pms2#
您可以使用Tika https://tika.apache.org/
这应该可以在不保存文件的情况下获得mimetype
yquaqz183#
给定字符串
filename
,您可以执行以下操作:nwwlzxa74#
您可以将mimetypeMap到现有的扩展名,方法是创建Map...
你可以使用apache.mime.types来创建一个类似于这里所做的:
http://www.java2s.com/Code/Java/Network-Protocol/MapfileextensionstoMIMEtypesBasedontheApachemimetypesfile.htm
这样,您就可以从内容类型中获取扩展名...
h9a6wy2h5#
要获取文件扩展名,您可以:
您使用的名称:
如果用户上传一个扩展名为.doc的可执行文件会怎么样?您可以获得内容类型:
这将返回一个MIME类型字符串。要获得正确的文件扩展名,您可以搜索文件名字符串的最后一个点,然后在此位置拆分它。
nc1teljy6#
您可以使用
org.springframework.util.StringUtils
:shyt4zoc7#
我解决了分裂的问题。并采取了最后一部分(不是第2节),
获取扩展名
为了得到名字
cetgtptt8#
cu6pst1q9#
您可以通过这种方式检查文件扩展名: