我正在使用最新版本的ng-file-upload,并在上传超过50张图片时看到大量内存消耗(> 1gb)。我希望能够专门从iphone处理500个以上的图像。泄漏似乎是由resize
和applyExifRotation
承诺引起的。我一直在使用Chrome中的任务管理器来测试内存使用情况。任何关于重构的建议都将受到赞赏。
我有一个具有以下属性的按钮。
<button ng-hide="uploading" accept="image/*" class="button" ngf-select ngf-change="doit($files)" ngf-multiple="true">Select Files</button>
使用像:
这样的控制器var CHUNKSIZE = 5;
$scope.doit = function(files) {
$scope.remaining = files.length;
$scope.fileChunks = _.chunk(files, CHUNKSIZE);
$scope.uploadChunk(0);
}
$scope.uploadChunk = function(i) {
var uploaded = 0;
angular.forEach($scope.fileChunks[i], function(f) {
Upload.resize(f, 1000).then(function(f) {
return f;
}).then(function(f) {
Upload.applyExifRotation(f).then(function(f) {
uploaded++;
$scope.uploadFile(f);
if (uploaded == CHUNKSIZE) {
$scope.uploadChunk(i + 1);
}
})
});
});
}
你可以在这里看到一个jsfiddle http://jsfiddle.net/nwy08oak/15/