在spring项目中如何根据文件头判断文件上传类型
时间: 2024-02-09 20:07:49 浏览: 29
在Spring项目中可以通过以下步骤根据文件头判断文件上传类型:
1. 添加依赖:在pom.xml文件中添加commons-io依赖,用于读取文件头。
```xml
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
```
2. 创建一个工具类,用于判断文件类型。比如,以下是一个判断图片文件类型的工具类。
```java
public class FileTypeUtils {
private static final Map<String, String> FILE_TYPE_MAP = new HashMap<>();
static {
FILE_TYPE_MAP.put("jpg", "FFD8FF"); // JPEG
FILE_TYPE_MAP.put("png", "89504E47"); // PNG
FILE_TYPE_MAP.put("gif", "47494638"); // GIF
FILE_TYPE_MAP.put("bmp", "424D"); // BMP
}
public static String getFileType(byte[] bytes) {
String hex = StringUtils.toHexString(bytes);
for (Map.Entry<String, String> entry : FILE_TYPE_MAP.entrySet()) {
if (hex.startsWith(entry.getValue())) {
return entry.getKey();
}
}
return null;
}
}
```
3. 在上传文件的Controller中,读取文件头并判断文件类型。比如,以下是一个上传图片的Controller。
```java
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) throws IOException {
byte[] bytes = file.getBytes();
String fileType = FileTypeUtils.getFileType(bytes);
if ("jpg".equals(fileType) || "png".equals(fileType) || "gif".equals(fileType) || "bmp".equals(fileType)) {
// 上传图片
} else {
// 文件类型不符合要求,返回错误信息
}
return "success";
}
```
以上代码仅供参考,具体实现需要根据实际情况进行调整。