我在网页上有input(type="file")
。
<input type='file' name="file" accept="image/*" />
我使用jQuery来抓取这样的文件:
$('input').on('change', function(e) {
console.log(e.target.files[0]);
});
我需要检查e.target.files[0].type
是否匹配"image.*"
模式,所以我这样做:
var matches = e.target.files[0].type.match('image.*');
在大多数情况下都可以正常工作,但是当从Android本机浏览器运行应用程序时,e.target.files[0].type
为空字符串。如果我选择存储在设备上的图像,就会发生这种情况。如果我使用相机e.target.files[0].type
拍摄的照片为"image/jpeg"
。
之前有没有人遇到过这个问题?
答案 0 :(得分:0)
由于我已添加评论,因此我尝试使用以下代码段创建用例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Image Test</title>
</head>
<body>
<form method="POST" enctype="multipart/form-data">
<input type="file" accept="image/*" onchange="previewAndUploadFile(event)"/><br/>
<img id="imagePreview" width="200" height="200"/>
<div id="imageType"></div>
</form>
<script type="text/javascript">
function previewAndUploadFile(event) {
var type = document.getElementById("imageType");
var file = event.target.files[0];
try {
var reader = new FileReader()
reader.onload = function() {
var preview = document.getElementById("imagePreview");
preview.src = reader.result;
}
reader.readAsDataURL(file);
type.innerHTML = file.type;
} catch(e){
type.innerHTML = "Invalid image.";
}
}
</script>
</body>
</html>
当文件名为sample.jpeg
且图片为有效图片时,一切正常。结果是image/jpeg
当文件名为sample
时(删除文件扩展名但图片内容仍然有效),结果为空字符串。
当图片损坏时(通过在记事本中进行编辑,您可以尝试其他方式)并且文件名为sample.jpeg
,图片类型仍然是image/jpeg
。
重复案例-3并将图片重命名为sample
,图片类型再次显示为空字符串。
可能是你的情况就是其中之一。