Skip to content
This repository has been archived by the owner on Aug 22, 2022. It is now read-only.

文件上传之前的MD5校验 #180

Closed
zhaoliuzi opened this issue May 15, 2014 · 6 comments
Closed

文件上传之前的MD5校验 #180

zhaoliuzi opened this issue May 15, 2014 · 6 comments

Comments

@zhaoliuzi
Copy link

请问文件上传之前的MD5校验如何做? 有相关的API提供么?

@2betop
Copy link
Contributor

2betop commented May 15, 2014

目前只有 html5 版本的代码。

请查看:#142

md5与md5Blob的相关代码:https://gist.github.com/2betop/10399507

后续考虑集成 md5 到 webuploader 里面

@yuanhaibo
Copy link

md5 用这个 很快
https://github.com/satazor/SparkMD5

@2betop
Copy link
Contributor

2betop commented May 22, 2014

@yuanhaibo 赞,之前查的时候是 jkm MD5 最快,现在看来确实是 SparkMD5 最快
这有真像 http://jsperf.com/md5-shootout/7

@duson
Copy link

duson commented May 26, 2014

用Promise应该是异步的吧,为什么浏览器还是会卡死。
md5Blob(blob)
.fail(function() {
deferred.reject();
})
.then(function(md5) {
因为我的代码是用RequireJS的,不知道怎么用Web Worker。真希望将Md5功能集成到Flash,以便支持IE6

@2betop
Copy link
Contributor

2betop commented Jun 23, 2014

已经集成 md5 库,欢淫使用。

@2betop 2betop closed this as completed Jun 23, 2014
@bisu328
Copy link

bisu328 commented Jun 24, 2015

beforeSend: function(block){
//分片验证是否已传过,用于断点续传
var task = $.Deferred();
(new WebUploader.Uploader()).md5File(block.blob).progress(function(percentage){
console.log(percentage);
}).then(function(val){
alert(val);
userInfo.md5 = val;
md5 = val;
block.chunkMd5 = val;
console.log("chunkcheck md5:"+val);
$.ajax({
type: "POST",
dataType:"text/json",
// url: backEndUrl ,
url: "http://localhost:8080/clouddisk/admin/files/chunkCheck",
data: {
status: "chunkCheck",
// name: uniqueFileName,
chunkIndex: block.chunk,
size: block.end - block.start,
md5: val
}
, cache: false
, timeout: 1000 //todo 超时的话,只能认为该分片未上传过
, dataType: "json"
}).then(function(data, textStatus, jqXHR){
console.log(data);
console.log("chunkCheck:"+data.md5);
if(data.ifExist){ //若存在,返回失败给WebUploader,表明该分块不需要上传
task.reject();
}else{
task.resolve();
}
}, function(jqXHR, textStatus, errorThrown){ //任何形式的验证失败,都触发重新上传
task.resolve();
});
return $.when(task);

                   });
            }
            , afterSendFile: function(file){
                var chunksTotal = 0;
                if((chunksTotal = Math.ceil(file.size/chunkSize)) > 1){
                    //合并请求
                    var task = new $.Deferred();
                    $.ajax({
                        type: "POST", 
                        dataType:"text/json",

// url: backEndUrl ,
url: "http://localhost:8080/clouddisk/admin/files/chunksMerge" ,
data: {
status: "chunksMerge" ,
// name: uniqueFileName,
chunks: chunksTotal,
ext: file.ext,
md5: md5Mark
}
, cache: false
, dataType: "json"
}).then(function(data, textStatus, jqXHR){
//todo 检查响应是否正常
task.resolve();
file.path = data.path;
UploadComlate(file);
}, function(jqXHR, textStatus, errorThrown){
task.reject();
});
return $.when(task);
}
else{
UploadComlate(file);
}
}
});

        var uploader = WebUploader.create({
            swf: "Uploader.swf"
            , server: backEndUrl
            , pick: "#picker"
            , resize: false
            , dnd: "#theList"
            , paste: document.body
            , disableGlobalDnd: true
            , thumb: {
                width: 100
                , height: 100
                , quality: 70
                , allowMagnify: true
                , crop: true
                //, type: "image/jpeg"
            }

请问如何把分片的chunkcheck 的md5值 ,传给backurl上传文件的方法里????

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants