我想使用Content-MD5标头为Azure提供正在上载的文件的客户端生成的MD5哈希值 . 我如何在FineUploader中完成此任务?
目标受众:Firefox,Chrome,Safari,Opera和IE10 .
从this answer判断我认为它应该是可能的,但我们至少有一半的客户将在非常旧(慢)的计算机上运行 . 这样做客户端MD5哈希方法是否可行?
有点相关的问题:我还认为设置最大文件大小以减少MD5散列算法的压力可能是明智的 . 也许只是在Azure的"chunking"限制之下?从不同的角度来看:我可以禁用分块吗?
1 回答
Fine Uploader通过the getFile(id) API method提供对底层
File
或Blob
对象的直接访问 . 一旦有权访问它,就可以使用FileReader
读取文件/ blob字节并生成散列 . 为了使散列更容易,请考虑使用像SparkMD5这样的JS库 .计算此哈希值的最佳位置可能是onSubmit callback handler . 由于读取文件的过程是异步的,因此您必须在处理程序中返回一个承诺,Fine Uploader支持该承诺 . 计算完哈希后,解析promise并使用Fine Uploader's setParams API method将哈希设置为文件的参数 .
是的,您可以,但是如果文件上传失败,您将失去与分块相关的所有好处,以及恢复功能和有效重试 .