上传图片仅支持png格式,若更改其他文件的后缀为png,则如何使用js或者java来识别
时间: 2024-03-13 18:46:46 浏览: 84
要识别一个文件是否为真正的PNG格式,需要对文件的头部进行检查。PNG文件的头部是8个字节,前4个字节固定为十六进制89 50 4E 47,后4个字节为文件的结束标志IHDR,如果文件的头部不符合这个规则,那么它就不是真正的PNG格式。
以下是使用JavaScript实现识别PNG文件的示例代码:
```javascript
function isPngFile(file) {
var reader = new FileReader();
reader.onloadend = function() {
var bytes = new Uint8Array(reader.result);
if (bytes.length < 8) {
// 文件长度小于8字节,不是PNG格式
console.log('Not a PNG file');
return false;
}
if (bytes[0] != 137 || bytes[1] != 80 || bytes[2] != 78 || bytes[3] != 71 ||
bytes[4] != 13 || bytes[5] != 10 || bytes[6] != 26 || bytes[7] != 10) {
// 文件头部不符合PNG格式
console.log('Not a PNG file');
return false;
}
if (bytes[12] != 73 || bytes[13] != 72 || bytes[14] != 68 || bytes[15] != 82) {
// 文件没有IHDR标志,不是PNG格式
console.log('Not a PNG file');
return false;
}
// 文件是PNG格式
console.log('Is a PNG file');
return true;
};
reader.readAsArrayBuffer(file.slice(0, 16));
}
```
这个函数接受一个File对象作为参数,通过FileReader读取文件的前16个字节,然后对文件头部进行检查。如果文件是PNG格式,函数返回true,否则返回false。
在Java中,也可以使用类似的方法来识别PNG文件。具体实现方式可以使用FileInputStream读取文件的前8个字节,然后对字节进行比较。如果文件头部符合PNG格式,再读取文件的第12到15个字节,判断是否为IHDR标志即可。
阅读全文