我需要在上传文件之前更改文件名,但该属性为只读:
https://developer.mozilla.org/zh-CN/docs/Web/API/File
所以
this.imageFile.name = newFileName;
不起作用。
我在这里查看了其他问题,但答案都是-“使用文件构造器创建新文件”。
例如
var file = new File(['foo'], 'newName', {type:'img/jpg'});
但是构造函数在IE或Edge中不可用。
最后,我发现表单数据在caniuse.com上具有良好的支持,您可以提供一个新的文件名,如下所示:
var newFileName = file.filename + "new";
var formData = new FormData();
formData.append('file', file, newFileName);
在这两种解决方案之间,我尝试了另一种解决方案:
Object.defineProperty(this.imageFile, 'name', {
writable: true
});
this.imageFile.name = newFileName;
显然,这是一个hack,但它确实有效。我决定不使用它,因为FormData append方法采用文件名来解决此问题,如果我可以手动更改描述符,并且它可以正常工作,我只是不明白为什么它是一个只读属性。
蝴蝶不菲
相关分类