我的设置如下:
singleFileUploads: false,
// To limit the number of files uploaded with one XHR request,
// set the following option to an integer greater than 0:
limitMultiFileUploads: undefined,
maxNumberOfFiles: 1,我正在尝试允许我的客户上传个人图像,在成功上传此图像后,我想重置文件选择,并允许我的用户上传其他图像而不是第一个图像。
在将maxNumberOfFiles设置为1之前,插件只是尝试上传用户选择的任何新文件和旧文件,现在,它允许用户每次访问包含插件实例的页面时只上传一次文件。
这是我到目前为止尝试过的:
$scope.model.resetFiles = function(){
angular.forEach(
angular.element("input[type='file']"),
function(inputElem){
// angular.element(inputElem).val(null);
angular.element(inputElem).find('.files').empty();
angular.element(inputElem).scope().clear()
});
}发布于 2013-10-30 04:40:22
出于安全原因,Javascript不允许您以您认为的方式清除文件字段。看起来好像创建一个新元素并替换旧的文件字段就可以了。有关更多细节和代码示例,请查看this link。
我见过一些人建议将元素包装在<form>标记中,并使用jQuery的reset()函数来重置表单,但如果您使用的不是jQuery的完整版,我不相信这会包含在AngularJS默认使用的jqLite中。
发布于 2014-06-26 22:07:10
我已经找到了一个临时的解决方案,直到插件更新以获得更好的角度支持。
var filePicker = null;
$scope.options = {
done: function (e, data) {
filePicker = data;
}
};
$scope.clearFiles = function () {
filePicker.scope.clear(filePicker.files);
};只需像这样将选项添加到指令中:
<form file-upload="options" action="import/excelupload" method="POST" enctype="multipart/form-data">发布于 2014-08-26 17:10:39
我简单地用这个简单的表单重置解决了这个问题
document.forms["mediaUploader"].reset();我的文件输入指令是将文件自动绑定到一个作用域变量。在调用forms.reset()之后,还会将files.length自动绑定到0和0,所以效果非常好!
另请查看https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.reset
https://stackoverflow.com/questions/19357407
复制相似问题