上传开始前检查文件 md5

check file md5 before upload start

我使用 Fine Uploader 将多个文件上传到服务器。

我想在上传前将每个文件的MD5哈希发送到服务器,如果服务器上存在文件,则放弃文件上传。

我使用 "sparkMD5" MD5 库和 Fine Uploader 的 setParams 方法为每个文件添加 MD5 哈希作为参数。

我的问题 - 计算某些文件的 MD5 可能需要几秒钟。我需要等到文件的 MD5 计算完成并发送到服务器。 我 return 一个承诺,但它阻止文件被添加到文件列表(在用户 select 文件之后)。

onSubmit: function(id){
    var file = this.getFile(id), promise = new qq.Promise();
    calculate_md5_then_check_with_server_for_duplication(id, file);
    return promise;
}

Fine Uploader 需要来自 onSubmit 处理程序的解析值才能正确处理文件。默认情况下,该回调完成后会自动上传文件。处理程序的结果也可能会阻止文件被接受。因此,最初闪烁文件,只是将其删除可能有点不和谐。这就是为什么在您的承诺成功解决之前文件不会出现在 UI 中的原因。

如果您想向用户提供一些有关 MD5 计算进度的指示,您当然可以使用最适合您的应用程序的 UI 来做到这一点。