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”,那为什么不呢?
谢谢
答案 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");
}