如果在发布表单之前可以这样做,可能会让我不得不将文件上传到我的服务器......
答案 0 :(得分:2)
实际上你可以现在读取客户端文件的内容,只要它在文件上传字段中选择并且你正在使用Firefox。请参阅input.files数组。然后你可以确实哈希它,虽然它可能很慢。
有关示例和紧凑型SHA-1实现,请参阅How would I get a Hash value of a users file with Javascript or Flash?。
答案 1 :(得分:1)
为此,您必须将文件的二进制信息加载到JavaScript中。这是不可能的。
但here's是JavaScript中SHA1的实现。
答案 2 :(得分:1)
可以使用SHA1,但性能不是最好的......
对于超过几百KB的任何内容,您必须运行一些基准并确定它是否确实是一个可行的解决方案。
请参阅this link以获得良好的实现(passpack和相当多的OS项目使用它)
编辑: 正如其他人已经回复的那样,实际上获取文件内容可能是一个完全不同的问题 - 所以除非你使用Google Gears或Adobe AIR这样的东西,否则它几乎是不可能的。
答案 3 :(得分:1)
可以使用HTML5文件界面阅读其本地文件:https://developer.mozilla.org/en-US/docs/Web/API/File
然后您可以使用类似Crypto.js https://code.google.com/p/crypto-js/的库来完成读取文本的哈希。
答案 4 :(得分:0)
不,您无法使用JavaScript从本地计算机访问文件。
您必须先将其上传到服务器,然后检查文件的校验和。
答案 5 :(得分:0)
不是本地的,不是,无论如何这都是个坏主意。文件中的每个字节都必须通过Javascript加载到内存中,你需要一种方法来实现它。
如果您必须这样做,并且您已经有办法将文件的二进制信息放入脚本中,那么您可以使用there's plenty个第三方脚本。例如Here's one。
答案 6 :(得分:0)
您可以使用Java小程序执行此操作。我从来没有使用过它们,但是有很多Java上传小程序。哈希算法本身可用于Java,可以通过java.security.MessageDigest访问。如果客户端没有可用的Java插件,您可能会故障回到服务器上的常规上传和散列。
附注:根据您对文件进行哈希处理的原因,您可能希望在上传后在服务器上重新哈希,而不是信任客户端。