4

如果可以在发布表格之前这样做,它可能会节省我将文件上传到我的服务器的时间......

4

7 回答 7

2

实际上,您现在可以读取客户端文件的内容,只要在文件上传字段中选择它并且您使用的是 Firefox。请参阅input.files数组。然后,您确实可以对其进行哈希处理,尽管它可能会相当慢。

请参阅如何使用 Javascript 或 Flash 获取用户文件的哈希值?示例和紧凑的 SHA-1 实现。

于 2009-03-24T00:55:44.723 回答
1

为此,您必须将文件的二进制信息加载到 JavaScript 中。这是不可能的。

但这是 SHA1 在 JavaScript 中实现。

于 2009-03-23T22:00:39.980 回答
1

可以使用 SHA1,但性能不会是最好的......

对于超过几百 KB 的任何内容,您都必须运行一些基准测试并确定它是否确实是一个可行的解决方案。

请参阅此链接以获得良好的实现(passpack 和相当多的 OS 项目使用它)

编辑:正如其他人已经回答的那样,实际获取文件内容可能是完全不同的事情 - 所以除非您使用 Google Gears 或 Adob​​e AIR 之类的东西,否则它几乎是不可能的。

于 2009-03-23T22:01:54.050 回答
1

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.

于 2014-01-31T06:31:26.397 回答
0

不,您不能使用 JavaScript 从本地计算机访问文件。

您必须先将其上传到服务器,然后检查文件的校验和。

于 2009-03-23T22:00:56.627 回答
0

不是本地的,不,无论如何这是一个坏主意。文件中的每个字节都必须通过 Javascript 加载到内存中,并且您需要一种方法将其加载到内存中。

如果您必须这样做,并且您有办法将文件的二进制信息放入脚本中,那么您可以使用大量第三方脚本。例如,这是一个

于 2009-03-23T22:01:19.917 回答
0

您可以使用 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.

于 2009-03-24T02:04:49.100 回答