您的位置:首页 > 其它

文件断点续传和秒传的一些问题

2015-12-08 16:47 204 查看

1、文件md5计算时机

在文件添加是进行md5计算。

问题:注意开始上传按钮显示与隐藏的时机。

uploader.bind('FilesAdded', function (up, files) {
$("#uploader_start").hide();
for (var i in files) {
filecount=files.length;
var fileReader = new FileReader(), box = document.getElementById('box');
blobSlice = File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice, file = files[i].getNative(), chunkSize = 209715200000,
chunks = Math.ceil(file.size / chunkSize), currentChunk = 0, spark = new SparkMD5();
sizestr+=files[i].size+":";
fileReader.onload = function (e) {                                        spark.appendBinary(e.target.result);
currentChunk++;
if (currentChunk < chunks) {
loadNext();
} else {
var tempMd5=spark.end();
md5str+=tempMd5+":";
box.innerHTML="正在检查秒传";
$("#md5Str").val(md5str);
if (currentcount==filecount) {
$("#uploader_start").show();
box.innerHTML="";
}
currentcount++;
}
};
function loadNext() {
var start = currentChunk * chunkSize, end = start + chunkSize >= file.size ? file.size : start + chunkSize;
fileReader.readAsBinaryString(blobSlice.call(file, start, end));
}
loadNext();
}
});


2、文件上传之前的参数传递

uploader.bind("BeforeUpload",function(up,files){
uploader.setOption("multipart_params",
{
md5Result:md5str,
sizeResult:sizestr,
//和一些其他必要的参数
});

});


3、ashx处理

foreach (string upload in context.Request.Files)
{
if (upload != null && upload.Trim() != "")
{
if(数据库中存在该文件的MD5&&已上传完整)
{
break;
}
else
{
if(临时文件的文件夹不存在)
{
//创建临时文件夹
}
//tempchunk:根据已上传文件文件大小计算chunk的分片数
//chunk:当前上传的分片数
//chunks:总分片数
if(chunks>1)
{
if(临时文件不存在)
{
//保存分片文件,并把数据插入到数据库
}
else
{
if(tempchunk==chunk)
{
//保存分片文件,并把数据更新到数据库
}
}
}
if(chunks>1&&chunk+1==chunks)
{
//合并临时文件并做数据库相关操作
}
if(chunks==1)
{
//小文件上传
}
}
}
}


4、处理多个文件上传时的问题

多个文件上传时,传递过来MD5数组。在遍历浏览器发送过来的文件时,需要获取MD5值,如果定义`public static int imd5 = 1;`,这个情况会有时出现第二次上传时文件无法上传的情况(可能是imd5还没有释放,其中imd5++的值还保留在imd5中),所以处理时需要获取文件的总个数filecount,就可以在进行文件合并时这么处理:


if (imd5 == filecount)
{
imd5 = 1;
}
else
{
imd5++;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: