使用多个过滤器上传角度文件

时间:2016-09-20 13:18:58

标签: angularjs file-upload

我正在尝试放置2个不同的过滤器,一个是文件类型,另一个是文件的大小。目前我正在使用它:

uploader.filters.push({
        name: 'imageFilter',
        fn: function(item /*{File|FileLikeObject}*/, options) {
            var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|';
            return '|jpg|png|jpeg|bmp|gif|'.indexOf(type) !== -1;
        }
    });

如何向此上传器添加第二个过滤器,将文件大小限制为600x600px?

更新1: 我想检查文件类型和文件大小。 它明白了:

uploader.filters.push({
        name: 'imageFilter',
        fn: function(item /*{File|FileLikeObject}*/, options) {
            var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|';
            return '|jpg|png|jpeg|bmp|gif|'.indexOf(type) !== -1;
        },
        name:'sizeFilter',
        fn: function(item, options){
            console.log(item);
            var maxSize=360000;
            console.log(item.size+":"+maxSize+" : "+(parseInt(item.size) >= maxSize));
            return parseInt(item.size) >= maxSize; 
        }
    });

现在这实际上并没有给我实际图像的大小(如果它真的很宽但只有100px高,它可能仍会达到文件大小)。

2 个答案:

答案 0 :(得分:0)

也许我在这里遗漏了一些东西,但你不能只使用像

这样的东西
uploader.filters.push({
            name: 'sizeFilter',
            fn: function(item /*{File|FileLikeObject}*/, options) {
                return item.file.size > {the size you want to check here} 
            }
        });

答案 1 :(得分:0)

  

将它们保存为2个不同的过滤器 -

uploader.filters.push({
    name: 'imageFilter',
    fn: function(item /*{File|FileLikeObject}*/ , options) {
        var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|';
        return '|jpg|png|jpeg|bmp|gif|'.indexOf(type) !== -1;
    }
});

uploader.filters.push({
    name: 'sizeFilter',
    fn: function(item, options) {
        console.log(item);
        var maxSize = 360000;
        console.log(item.size + ":" + maxSize + " : " + (parseInt(item.size) >= maxSize));
        return parseInt(item.size) >= maxSize;
    }
});
  

然后,在您的HTML中将它们用作 - filters="imageFilter, sizeFilter" 不是吗?