【发布时间】:2018-12-17 04:12:21
【问题描述】:
我想将文件的散列版本与数据库中存储的数据进行比较,以便中止重复上传。
对于散列和 FileReader API 的主题相当“新”,我发现这个过程有点混乱。 我正在使用前端库 SparkMD5.js
测试 n1 比较两个字符串:
// frontend
$.post(url, {sparkMD5('random text')})
// backend
$input->hash == md5('random text') // outputs true
测试 n2 - 在 Fineuploader onSubmit 事件处理程序中
// frontend
var file = this.getFile(id);
var reader = new FileReader();
//
reader.onload = function(e) {
var data = reader.result;
var hexHash = SparkMD5.hash(data);
console.log(hexHash);
}
var res = reader.readAsDataURL(file); // or reader.readAsBinaryString(file)
......
//backend
$file = Input::file('qqfile');
$hash = md5(file ) // or md5_file(file )
$hash == $input->hexHash // outputs false
我的问题:
1) 为什么是md5($file) == md5_file($file) \\ false 的结果?
2) 读取文件readAsDataURL or readAsBinaryString 的正确方法是什么?
3) 有没有办法在不使用 filereader api 的情况下读取和散列 Fineuploader 的 getFile(id) 的结果并返回 File or Blob?
上述问题的答案可能被认为是宽泛的,超出了我当前问题的范围,但我想尽可能地理解这个主题。
谢谢。
【问题讨论】:
标签: php laravel hash fine-uploader