我想建立的Javascript代码的文件type.In这我创建Web应用程序检查允许用户上传文档文件viz
,doc
,xls
,ppt
,docx
,xlsx
,pptx
,txt
,rar
,zip
,pdf
,jpg
,png
,gif
,jpeg
,odt
,但它不应该让其他文件。我不能仅在文件名中检查扩展名。用户可以更改它。
我尝试检查内容类型,但每次都在更改它。建议表示赞赏。
在“现代”浏览器(IE10 +,Firefox 4 +,Chrome 7 +,Safari 6.0.2+等)中,您可以使用File
/ FileReader
API读取文件的内容并在客户端进行解析。例如(例如,不是生产代码):
var fileInput = /* Your <input type="file"> element */
fileInput.addEventListener("change", function(e) {
var file = e.currentTarget.files[0];
var reader = new FileReader();
reader.onload = fileLoaded;
reader.readAsArrayBuffer(file);
});
function fileLoaded(e)
{
var arrayBuffer = e.currentTarget.result;
// 32 indicates that we just want a look at the first 32 bytes of the buffer.
// If we don't specify a length, we get the entire buffer.
var bytes = new Uint8Array(arrayBuffer, 0, 32);
// Now we can check the content, comparing to whatever file signatures we
// have, e.g.:
if (bytes[0] == 0x50 &&
bytes[1] == 0x4b &&
bytes[2] == 0x03 &&
bytes[3] == 0x04)
{
// This is most likely docx, xlsx, pptx or other zip file.
}
}
请注意,但是,如一个.zip不会有开始与50 4B 03 04.所以,除非你花了相当多的时间寻找到不同的文件的签名(或找到一些库,已经这样做),你可能拒绝实际上可能有效的文件。当然,也可能会产生误报。
不过,在这种情况下,误报无关紧要-因为这仅是一种用户友好的措施,它可以用来检查用户是否正在上传不会被服务器拒绝的文件。服务器应始终验证最终发送的内容。
当然,读取整个文件以查看前几个字节也不是很有效。:-)参见Ray Nicholus对此的评论。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句