【发布时间】:2018-05-27 00:02:53
【问题描述】:
我有一个 Java 后端服务,可以将文件上传到服务器。但我似乎正在上传一些不需要的文件类型。
对于例如:如果我有一个 foo.jpg 文件并将其重命名为 foo.pdf 然后它会被上传。我如何检查 foo.pdf 的实际内容
下面是我正在使用的代码
for (Part part : request.getParts()) {
if (part.getName().startsWith("file")) {
String filename = part.getHeader("content-disposition");
filename = filename.replaceFirst("(?i)^.*filename=\"([^\"]+)\".*$", "$1");
String fileType = part.getContentType();
DocumentUpload documentUpload = new DocumentUpload();
documentUpload.setFilename(filename);
documentUpload.setFileType(fileType);
documentUpload.setPayload(part.getInputStream());
response = documentService.save(documentUpload, uriInfo);
break;
}
}
【问题讨论】:
-
你想在服务器上检查你得到的字节是否真的是指定的文件类型?
-
从 http 请求中获取文件类型意味着您信任浏览器。如果您需要更多控制,您可以将文件保存到临时文件,然后尝试按内容识别它的类型。这里有很多相关的问题,例如stackoverflow.com/questions/9738597/…