javascript - 精细上传异步任务在 Chrome 中有效,但在 IE11 中无效

标签 javascript internet-explorer-11 fine-uploader fileapi

我使用Fineuploader Promise在提交回调中运行 md5 检查以防止已存在的文件再次上传,它在 chrome 中有效,但在 IE11 中无效。不是 IE bug 还是我做错了?我该如何修复它?多谢。 这是脚本:

 $("#uploader").fineUploader({
    request: {
        endpoint: 'home/upload'
    },
    multiple: true,
    autoUpload: false,
    debug: true,
    chuncking: {
        enabled:true
    },
    editFilename: {                                            
        enable: true
    },
    validation: {
        sizeLimit: 1073741824
    }
}).on({                                                      
    "complete": function (event, id, fileName, responseJSON) { 
        if (responseJSON.success) {
            alert("upload success");
        }
    },
    "validate": function (event,data) {

    },
    "submit": function (event,id, fileName) {             

        var promise = new qq.Promise();
        var file = $(this).fineUploader('getFile', id);
        var freader = new FileReader();
        validateMD5(file, freader,promise);
        return promise;
    },

    "error": function (event, id, fileName, reason) {
        alert(reason);
    }
});



$("#uploadButton").click(function () {
    $('#uploader').fineUploader('uploadStoredFiles');
});
function validateMD5(file, reader,promise) {

    var blobSlice = File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice;
    var spark = new SparkMD5();
    var chunkSize = 2097152;
    var chunks = Math.ceil(file.size / chunkSize);
    var currentChunk = 0;
    var start1 = 0;
    var end1 = chunkSize >= file.size ? file.size : chunkSize;
    reader.readAsBinaryString(blobSlice.call(file, start1, end1));
    reader.onload = function (e) {
        spark.appendBinary(e.target.result);
        currentChunk++;
        if (currentChunk < chunks) {
            var start = currentChunk * chunkSize;
            var end = start + chunkSize >= file.size ? file.size : start + chunkSize;
            reader.readAsBinaryString(blobSlice.call(file, start, end));
        } else {
            var md5 = spark.end();
            var r = checkMd5Onserver(md5);
            if (r == true) {
                promise.success();
            } else {
                promise.failure();
            }
        }

    };
}

function checkMd5Onserver(md5) {
    return false;//just for test
}

最佳答案

在我的代码中,我使用 FileReader.readAsBinaryString() 方法读取文件,IE11 不再支持它。更多详情请参见FileReader.readAsBinaryString function-- doesnt work on IE11http://www.w3.org/TR/FileAPI/#dfn-filereader

关于javascript - 精细上传异步任务在 Chrome 中有效,但在 IE11 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23857999/

相关文章:

javascript - ng-model AngularJs 中的函数调用

google-chrome - HTML5 视频 : ffmpeg-encoded MP4 not playing in any browser (plays in VLC though)

javascript - 为什么即使没有 src 标签,图像 'complete' 属性也总是返回 true?

php - Fine Uploader 无法上传文件

javascript - FineUploader allowedExtensions 使用数组?

javascript - 确定位于单元格下方的表列中的单元格

javascript - 未捕获的类型错误 : Object [object Object] has no method 'validationEngine'

css - Bootstrap 导航栏在 IE11 上未正确居中

javascript - 精细 uploader : Thumbnails on the fly clientside

javascript - 如何在 javascript 函数中单击时传递此变量?