Java校驗文件類型實現(xiàn)方式
通常校驗文件類型,是獲取文件后綴,根據(jù)后綴名進行判斷。
但其實這種方式是有被欺騙風(fēng)險的。
下面記錄幾種判斷文件類型的方式。
MIME類型判斷
MIME (Multipurpose Internet Mail Extensions) 類型是用來標(biāo)識文件類型的一種方式。
每種文件類型都有一個對應(yīng)的MIME類型,獲取上傳文件的MIME類型,可以判斷文件的類型。
import javax.activation.MimetypesFileTypeMap;
import java.io.File;
File file = new File("example.jpg");
String mimeType = new MimetypesFileTypeMap().getContentType(file);
if (mimeType.equals("image/jpeg") || mimeType.equals("image/png")) {
// 文件類型合法
} else {
// 文件類型不合法
}
這種方式適合用來判斷指定文件是否為指定類型。
需要注意:
- 使用文件的MIME類型驗證文件類型需要java 7及以上版本的支持。
- 另外,不同的操作系統(tǒng)和文件系統(tǒng)可能對MIME類型的識別有所差異,需進行充分測試。
文件頭校驗
文件頭是文件開頭的幾個字節(jié),通常用于標(biāo)識文件的類型和格式。
校驗文件頭,可以判斷文件類型是否符合預(yù)期。
import java.io.FileInputstream;
import java.io.IoException;
public class FileValidator {
public void imgFileValidator(String filePath) throws Exception {
FileInputstream fis = new FileInputstream(filePath)
byte[] header = new byte[4];
fis.read(header);
if(header[0] == (byte) 0x && header[1] == (byte) 0xD8){
// 文件類型是JPEG
}
}
}
讀取JPEG文件的前兩個字節(jié),并檢查其是否等于JPEG文件的固定文件頭。如果文件頭不匹配,則說明文件格式不正確。
上述代碼是JPEG格式的判定,如果是ZIP格式判定,代碼如下:
public void zipFileValidator(String filePath) throws Exception{
FileInputstream fis = new FileInputstream(filePath);
byte[l buffer = new byte[4];
fis.read(buffer,0,4);
fis.close();
if(buffer[0] == (byte)0x50
&& buffer[1] == (byte)0x4B
&& buffer[2] == (byte)0x03
&& buffer[3] == (byte)0x04){
//文件類型為zip
}
}
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot Actuator監(jiān)控端點小結(jié)
這篇文章主要介紹了Spring Boot Actuator監(jiān)控端點小結(jié),需要的朋友可以參考下2017-06-06
Java 中的 Consumer 與 Supplier 接口使用場景與
文章介紹了Java 8中函數(shù)式接口的核心概念,Consumer與Supplier接口使用場景與示例,重點對比了Consumer(消費數(shù)據(jù))與Supplier(供給數(shù)據(jù))的區(qū)別,感興趣的朋友跟隨小編一起看看吧2025-08-08
java easyUI實現(xiàn)自定義網(wǎng)格視圖實例代碼
這篇文章主要給大家介紹了關(guān)于java easyUI實現(xiàn)自定義網(wǎng)格視圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10

