为什么revokeObjectURL不显示IE 11上的文件大小

时间:2018-09-24 13:43:05

标签: jquery internet-explorer-11 revokeobjecturl

var fileInput   = document.querySelector('#file');
var preview     = document.getElementById('preview');

fileInput.addEventListener('change', function(e) {
var var_error = 0;

$('.contest_upload_preview').show();
$('.contest_upload_error').hide();

preview.onload = function() {
    var pic_width   = this.naturalWidth; 
    var pic_height  = this.naturalHeight;
    var pic_size    = $('#file')[0].files[0].size;

 //   alert("FS: "+pic_size);

    if(pic_size > 15728640) {
        //larger than 15MB (15728640). 
        var_error = 1;
        var_upload_pic = 1;
        preview.setAttribute('src', '');
    } else {
        //Dimension-check       
        if(pic_width < 720) {
            var_error = 1;
            var_upload_pic = 1;
            preview.setAttribute('src', '');
        }
        if(pic_height < 720) {
            var_error = 1;
            var_upload_pic = 1;
            preview.setAttribute('src', '');
        }
    }

    window.URL.revokeObjectURL(this.src);
};

if(var_error == 0) {
    console.log("geladen");
    var url = URL.createObjectURL(e.target.files[0]);
    preview.setAttribute('src', url);
    var_upload_pic = 0;
    }

}, false);

除了IE 11之外,此脚本运行正常,但出现此错误: DOM7001:取消参数“ url”。 Fehler beim Sperren der folgenden Blob-URL

如果我用谷歌搜索“ window.URL.revokeObjectURL IE11”,那为什么不呢?

谢谢

2 个答案:

答案 0 :(得分:0)

您可能只想防止空的this.src,因为您是在函数中(通过setAttribute进行设置):

if(this.src) window.URL.revokeObjectUrl(this.src);

答案 1 :(得分:0)

Internet Explorer没有提供一种在上传之前验证文件大小的标准方法。

有关file api的更多信息,请参见here

您仍然可以弄清楚文件的大小,但是这样做很麻烦,因为您需要更改用户的浏览器,以便在页面上启用Activex。这是相关的代码。

function getSize()
{
    var myFSO = new ActiveXObject("Scripting.FileSystemObject");
    var filepath = document.upload.file.value;
    var thefile = myFSO.getFile(filepath);
    var size = thefile.size;
    alert(size + " bytes");
}