如何在即将上传的文件实际上传之前进行分析?

How can I analyze a file about to be uploaded before it's actually uploaded?

本文关键字:实际上 文件      更新时间:2023-09-26

我们目前正在规划一个人们可以上传电影的网站。在看YouTube的时候,你会注意到有些电影被上传了两次或更多次(由不同的用户)。为了扩展我们的应用程序,我们正在考虑以下想法:

  1. 用户选择要上传的电影文件
  2. JavaScript将从文件中获得SHA256哈希(它比MD5哈希更准确),然后再上传
  3. 网站将检查哈希是否已经存在
  4. 如果哈希值不存在,文件将被上传
  5. 如果该散列确实存在,将提示一条消息,或者将创建对服务器上已经存在的版本的引用。这没有视频上传。

问:我们如何用JavaScript分析文件以获得SHA256哈希,SHA256是否足够好,或者我们应该考虑SHA512(或其他算法)?

使用HTML5 File API读取文件:http://www.html5rocks.com/en/tutorials/file/dndfiles。下面是计算SHA-256的JS代码:http://www.webtoolkit.info/javascript-sha256.html

我必须补充说,我从来没有尝试过,但似乎是可能的。亚历山大是对的,这将花费很长时间的大视频,但你可以尝试使用WebWorker API,以避免冻结浏览器:http://html5rocks.com/en/tutorials/workers/basics

现在先把文件放在一边,如果问题实际上是是否有可能在JavaScript中获得SHA-256哈希,那么答案是肯定的。你可以自己补充这个(坏主意),或者使用像斯坦福JS加密库这样的库(好主意)。

就File API而言,它在每个主流桌面浏览器的前沿版本以及最新的Android浏览器中都实现了。不支持iOS,因为它没有真正的文件系统。查看caniuse.com获取最新数据

答案很简单,你不能。如果你想至少支持所有的浏览器的话。我认为Chrome和FireFox都支持在客户端读取文件,IE在ActiveX控件的帮助下支持它,但要获得一个在所有浏览器上都有效的解决方案,你必须使用像Flash或Silverlight这样的插件。此外,当做视频大小的文件上传(大型+文件)时,我认为从一开始就使用flash或类似的方法是一个好主意,但这只是我的意见。