如果可以在发布表格之前这样做,它可能会节省我将文件上传到我的服务器的时间......
7 回答
实际上,您现在可以读取客户端文件的内容,只要在文件上传字段中选择它并且您使用的是 Firefox。请参阅input.files数组。然后,您确实可以对其进行哈希处理,尽管它可能会相当慢。
请参阅如何使用 Javascript 或 Flash 获取用户文件的哈希值?示例和紧凑的 SHA-1 实现。
为此,您必须将文件的二进制信息加载到 JavaScript 中。这是不可能的。
但这是 SHA1 在 JavaScript 中的实现。
可以使用 SHA1,但性能不会是最好的......
对于超过几百 KB 的任何内容,您都必须运行一些基准测试并确定它是否确实是一个可行的解决方案。
请参阅此链接以获得良好的实现(passpack 和相当多的 OS 项目使用它)
编辑:正如其他人已经回答的那样,实际获取文件内容可能是完全不同的事情 - 所以除非您使用 Google Gears 或 Adobe AIR 之类的东西,否则它几乎是不可能的。
One can read their local file using the HTML5 File interface: https://developer.mozilla.org/en-US/docs/Web/API/File
And then you can use a library for like Crypto.js https://code.google.com/p/crypto-js/ to finish the hash over the read text.
不,您不能使用 JavaScript 从本地计算机访问文件。
您必须先将其上传到服务器,然后检查文件的校验和。
您可以使用 Java 小程序来做到这一点。我从来没有使用过它们中的任何一个,但是那里有很多 Java 上传小程序。哈希算法本身可用于 Java,并可通过 java.security.MessageDigest 访问。如果客户端没有可用的 Java 插件,您可以故障回复到服务器上的常规上传和散列。
A side note: depending upon why you're hashing the file you'll probably want to re-hash it on the server after the upload rather than trust the client.