如何检查文件的扩展名是否与之相同?

洛基·梅纳

我想建立的Javascript代码的文件type.In这我创建Web应用程序检查允许用户上传文档文件vizdocxlspptdocxxlsxpptxtxtrarzippdfjpgpnggifjpegodt,但它不应该让其他文件。我不能仅在文件名中检查扩展名。用户可以更改它。

我尝试检查内容类型,但每次都在更改它。建议表示赞赏。

吉米·Th(JimmiTh)

在“现代”浏览器(IE10 +,Firefox 4 +,Chrome 7 +,Safari 6.0.2+等)中,您可以使用File/ FileReaderAPI读取文件的内容并在客户端进行解析。例如(例如,不是生产代码):

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.
   }
}

http://jsfiddle.net/35XfG/

请注意,但是,如一个.zip不会开始与50 4B 03 04.所以,除非你花了相当多的时间寻找到不同的文件的签名(或找到一些库,已经这样做),你可能拒绝实际上可能有效的文件。当然,也可能会产生误报。

不过,在这种情况下,误报无关紧要-因为这仅是一种用户友好的措施,它可以用来检查用户是否正在上传不会被服务器拒绝的文件。服务器应始终验证最终发送的内容。

当然,读取整个文件以查看前几个字节也不是很有效。:-)参见Ray Nicholus对此的评论。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何检查文件的扩展名?

如何通过文件名(无扩展名)检查文件是否存在?

如何检查文件名(带有任何扩展名)在Golang目录中是否存在?

如何使用Python检查具有相同扩展名的同名文件

Python:检查扩展名列表中是否存在以扩展名结尾的文件名

扩展名未知时检查文件是否存在

Laravel:检查文件是否存在而无需扩展名

检查图像的文件扩展名是否不正确

检查文件扩展名是否包含多个上传框

如何在不查看Python扩展名的情况下检查文件是否存在?

如何检查用户输入的字符串是否包含文件扩展名

如何从URL检查是否存在.html扩展名?

如何在不检查路径扩展名的情况下检查文件是否为图像文件?

如何检查输入文件的扩展名? Tkinter

如何在PHP中检查正确的文件扩展名?

如何使用数组检查文件扩展名

如何检查ionic 3模板中的文件扩展名

如何检查文件扩展名是大写还是小写?

如何使用 React 检查文件扩展名

jQuery如何在不检查扩展名的情况下检查上传的文件是否为图像?

如何检查文件是否在Bash中具有带正则表达式的扩展名(任何扩展名)?

FinderSync检查是否选择了扩展名

在 Javascript/FileApi 中上传文件时,如何检查文件是否具有所需的扩展名

C# - 如何检查文件夹中的所有文件是否具有特定扩展名

如何确定SearchPattern是否影响文件扩展名?

是否可以打开多个具有相同扩展名的文件,而无需通过cmd键入扩展名?

检查Java中的文件扩展名

检查 html 中的文件扩展名

检查并匹配文件扩展名