无法在“FileList”上设置索引属性:不支持索引属性设置器。v
Posted
技术标签:
【中文标题】无法在“FileList”上设置索引属性:不支持索引属性设置器。v【英文标题】:Failed to set an indexed property on 'FileList': Index property setter is not supported.v 【发布时间】:2018-03-14 15:02:52 【问题描述】:angular.module('myApp')
.directive('fileModel', ['$parse', 'uploadService','messageService','CONF', function ($parse, uploadService,messageService,CONF)
return
restrict: 'A',
link: function (scope, element, attrs)
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function ()
var file = element[0].files[0];
var fd = new FormData();
fd.append('file', file);
console.log(fd)
self.isDisabled = true;
ParkingService.uploadImage(fd).then(
function (response)
response = JSON.parse(response);
element[0].files[1] = response;
console.log(response)
if (response.message !== 'ERROR')
// self.image = response.result;
messageService.toasterMessage(CONF.TOASTER_TOP_RIGHT,CONF.TOASTER_SUCCESS,"Success Upload File");
else
messageService.toasterMessage(CONF.TOASTER_TOP_RIGHT,CONF.TOASTER_ERROR,response.result);
);
scope.$apply(function ()
modelSetter(scope, element[0].files);
);
);
;
]);
如何在这个变量中设置响应?
element[0].files[1] = response;
它适用于 safari 或旧版 chrome。但在新的 chrome 中不支持..
【问题讨论】:
【参考方案1】:Chrome 和 Firefox 现在都不允许在 NodeList 和 FileList 上设置新索引。我怀疑这与最近的变化有关,以使这些“类似数组”的结构在一般情况下与 javascript 更兼容,并且是浏览器前进的总体方向。
在非严格模式下运行会恢复行为,但在转译的 JavaScript 环境中是不可行的 - 或者可能是可取的。
最好的选择是使用 const files = Array.from(element[0].files)
或仅使用 const files = [...element[0].files]
将 FileList 转换为数组(取决于您支持的浏览器和您使用的转译)。
【讨论】:
以上是关于无法在“FileList”上设置索引属性:不支持索引属性设置器。v的主要内容,如果未能解决你的问题,请参考以下文章
mysql+springboot+jpa查询几十万条数据很慢 如何解决?
如何在 FileList 对象中设置文件对象和长度属性,其中文件也反映在 FormData 对象中?