如何在即将上传的文件实际上传之前进行分析?
How can I analyze a file about to be uploaded before it's actually uploaded?
我们目前正在规划一个人们可以上传电影的网站。在看YouTube的时候,你会注意到有些电影被上传了两次或更多次(由不同的用户)。为了扩展我们的应用程序,我们正在考虑以下想法:
- 用户选择要上传的电影文件
- JavaScript将从文件中获得SHA256哈希(它比MD5哈希更准确),然后再上传
- 网站将检查哈希是否已经存在
- 如果哈希值不存在,文件将被上传
- 如果该散列确实存在,将提示一条消息,或者将创建对服务器上已经存在的版本的引用。这没有视频上传。
问:我们如何用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或类似的方法是一个好主意,但这只是我的意见。
- 如何播放部分音频文件
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用WCF服务和javascript表单post上传.doc文件
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何在php文件中获取$.post-ajax传递的值
- 直接下载文件,而不是从window.open(url)
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用压缩的JavaScript文件(不是运行时压缩)
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何在即将上传的文件实际上传之前进行分析?
- require()实际上返回的是文件还是函数
- JSON调用给出的值实际上不在.JSON文件中
- 当JS文件实际上是php时,如何从我的服务器发送它
- 您实际上如何从javascript文件中获取角度.js动画代码以激活