Angular JS文件上传使用Angular文件上传-限制文件类型,大小

Angular-JS File Upload using angular-file-upload - Limiting File Types, Size

本文关键字:文件 Angular 类型 大小 JS      更新时间:2023-09-26

对于文件上传,我使用以下模块:https://github.com/nervgh/angular-file-upload

html片段看起来像:

    <div nv-file-drop="" uploader="uploader" options="{ url: '/whatever/uploadfile'}" 
    removeAfterUpload="true" >
    <div nv-file-over="" uploader="uploader" over-class="another-file-over-class" 
class="well my-drop-zone" >
    You may drag drop files here
    </div>
    </div>

如何确保:
-只有图像(png/jpg)可以放在文件放置区域
-文件大小有限

显然可以使用过滤器,但找不到任何例子。

查看源代码中有关如何使用过滤器的一些示例(https://github.com/nervgh/angular-file-upload/blob/master/src/module.js#L51)

this.filters.unshift({name: 'queueLimit', fn: this._queueLimitFilter});
this.filters.unshift({name: 'folder', fn: this._folderFilter});

队列限制筛选器(https://github.com/nervgh/angular-file-upload/blob/master/src/module.js#L357)

FileUploader.prototype._queueLimitFilter = function() {
    return this.queue.length < this.queueLimit;
};

文件夹筛选器(https://github.com/nervgh/angular-file-upload/blob/master/src/module.js#L349)

FileUploader.prototype._folderFilter = function(item) {
    return !!(item.size || item.type);
};

基于这些例子,我想过滤器可以这样使用:

javascript

var uploadOptions = {
    url: '/whatever/uploadfile',
    filters: []
};
// File must be jpeg or png
uploadOptions.filters.push({ name: 'imagefilter', fn: function(item) {
   return item.type == 'image/jpeg' || item.type == 'image/png';
}});
// File must not be larger then some size
uploadOptions.filters.push({ name: 'sizeFilter', fn: function(item) {
   return item.size < 10000;
}});
$scope.uploadOptions = uploadOptions;

html

<div nv-file-drop="" uploader="uploader" options="uploadOptions" removeAfterUpload="true" >
    <div nv-file-over="" uploader="uploader" over-class="another-file-over-class" class="well my-drop-zone" >
    You may drag drop files here
    </div>
</div>