Ken*_*Ito 6 javascript validation jquery android google-chrome
在html/js中,当您在Chrome(43)for Android(5.1.1)上选择文件时,生成的文件名缺少扩展名,文件类型为空字符串.想知道是否有办法获取遗失的信息?如果没有,是否有合理的方法对文件类型进行客户端验证?
请参阅下面的示例小提琴,并注意我在Windows桌面浏览器和ios safari上获得扩展和mime类型.
$(function(){
$("#fileInput").on("change", function(e){
$("#name").html(e.target.files[0].name);
$("#type").html(e.target.files[0].type);
});
});
Run Code Online (Sandbox Code Playgroud)
更新 我注意到在使用android Documents浏览器时,Audio选项卡(我用来选择文件)似乎不提供文件扩展名和mime类型.如果我使用任何其他选项卡导航到文件,一切似乎都可以.
通过 Android 文档文件浏览器,某些选项卡不提供文件扩展名和类型。例如,“音频”选项卡(显示音频元数据)和一些连接的存储帐户。
因此,进行文件类型验证的另一种方法是使用“文件签名” http://www.filesignatures.net/index.php?page=all
本质上,您查看了二进制文件的一部分。下面的简化示例。
var audioFile; //Set from elsewhere
if (FileReader) {
var reader = new FileReader();
reader.addEventListener("load", function(e) {
var mp3FileSignature = [255, 251, 48];
var id3FileSignature = [73, 68, 51];
//There are actually quite a few more scenarios to handle for mp3's in particular
//Most file types are simpler
var arrayBuffer = e.target.result;
if (arrayBuffer && arrayBuffer.byteLength >= 3) {
var slice = arrayBuffer.slice(0, 3);
var view = new Uint8Array(slice);
if ((mp3FileSignature[0] != view[0] || mp3FileSignature[1] != view[1] || mp3FileSignature[2] != view[2])
&& (id3FileSignature[0] != view[0] || id3FileSignature[1] != view[1] || id3FileSignature[2] != view[2])) {
//Not an mp3
}
}
})
reader.readAsArrayBuffer(audioFile);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1420 次 |
| 最近记录: |