第二次单击上传按钮时 ng-file-upload 文件为空
ng-file-upload files null when clicking upload button for the second time
我正在为我的 angular 项目使用 ng-file-upload,这是 html 代码:
<div class="form-group">
<button class="btn btn-warning" ngf-select="imagesSelected($files)" multiple="multiple" ngf-pattern="'image/*'" accept="image/jpeg,image/png">选择图片</button>
</div>
这是我的 javascript 代码:
$scope.imagesSelected = function (files) {
if (files.length > 0) {
angular.forEach(files, function (imageFile, index) {
$scope.upload = Upload.upload({
url: '/upload_image',
method: 'POST',
file: imageFile,
data: {
'fileName': imageFile.name
}
}).success(function (response, status, headers, config) {
...
});
});
}
};
第一次单击 select 图片文件的按钮时,图片文件会在 selected 后立即上传,这是我所期望的。但是当我第二次点击上传按钮时,控制台出现错误指向 if (files.length > 0) 行:
Uncaught TypeError: Cannot read property 'length' of null
和 selecting window 文件从未出现,
第三次我点击上传按钮它再次正常工作,第四次没有,依此类推......
ng-file-upload 的版本是 9.0.4,这个 lib 的 bug 是没有修复还是我弄错了?谢谢
你写代码的方式是错误的。
$scope.imagesSelected = function (files) {
$scope.files = files;
if (files && files.length) {
Upload.upload({
url: '/upload_image',
method: 'POST',
data: {
files: files
}
}).then(function (response) {
$timeout(function () {
$scope.result = response.data;
});
}, function (response) {
if (response.status > 0) {
$scope.errorMsg = response.status + ': ' + response.data;
}
}, function (evt) {
$scope.progress =
Math.min(100, parseInt(100.0 * evt.loaded / evt.total));
});
}
};
我正在为我的 angular 项目使用 ng-file-upload,这是 html 代码:
<div class="form-group">
<button class="btn btn-warning" ngf-select="imagesSelected($files)" multiple="multiple" ngf-pattern="'image/*'" accept="image/jpeg,image/png">选择图片</button>
</div>
这是我的 javascript 代码:
$scope.imagesSelected = function (files) {
if (files.length > 0) {
angular.forEach(files, function (imageFile, index) {
$scope.upload = Upload.upload({
url: '/upload_image',
method: 'POST',
file: imageFile,
data: {
'fileName': imageFile.name
}
}).success(function (response, status, headers, config) {
...
});
});
}
};
第一次单击 select 图片文件的按钮时,图片文件会在 selected 后立即上传,这是我所期望的。但是当我第二次点击上传按钮时,控制台出现错误指向 if (files.length > 0) 行:
Uncaught TypeError: Cannot read property 'length' of null
和 selecting window 文件从未出现, 第三次我点击上传按钮它再次正常工作,第四次没有,依此类推...... ng-file-upload 的版本是 9.0.4,这个 lib 的 bug 是没有修复还是我弄错了?谢谢
你写代码的方式是错误的。
$scope.imagesSelected = function (files) {
$scope.files = files;
if (files && files.length) {
Upload.upload({
url: '/upload_image',
method: 'POST',
data: {
files: files
}
}).then(function (response) {
$timeout(function () {
$scope.result = response.data;
});
}, function (response) {
if (response.status > 0) {
$scope.errorMsg = response.status + ': ' + response.data;
}
}, function (evt) {
$scope.progress =
Math.min(100, parseInt(100.0 * evt.loaded / evt.total));
});
}
};