【问题标题】:How to use w3c File object in cordova with cordova-plugin-file installed?如何在安装了cordova-plugin-file的cordova中使用w3c File对象?
【发布时间】:2018-02-22 19:22:32
【问题描述】:
我正在尝试使用默认的 File() 构造函数创建一个 File 对象,但是由于 cordova-plugin-file 用它自己的 File() 构造函数的实现替换了构造函数,所以我无法获取 File 对象.有什么方法可以在不删除文件插件的情况下访问 w3c File 构造函数?
另外,是否可以编辑插件,以便将 File() 构造函数重命名为 FileCordova() 之类的任何其他内容,以便可以访问默认构造函数和插件的构造函数?
PS:我需要 File 对象传入一个只接受 w3c File 对象的函数,所以插件返回的对象对我来说几乎没用。
【问题讨论】:
标签:
cordova
cordova-plugins
cordova-plugin-file
【解决方案1】:
我通过编辑cordova-plugin-file 弄清楚了。我在 /Project/plugins/cordova-plugin-file/
编辑了 plugin.xml
我改变了这个:
<js-module src="www/File.js" name="File">
<clobbers target="window.File" />
</js-module>
到这里:
<js-module src="www/File.js" name="File">
<clobbers target="window.FileC" />
</js-module>
编辑完文件后,我去了cordova cmd并删除了我拥有的所有平台
cordova platform remove android
cordova platform remove browser
然后我再次将它们添加回来,因为这是将插件重新加载到平台资产文件夹中的唯一方法。
cordova platform add android
cordova platform add browser
在此之后,我可以使用 new File() 构造函数获取默认 File 对象,并使用 new FileC() 构造函数获取文件插件的 File 对象。
【解决方案2】:
这是一个更简单的调整。由于标准 File 对象只是一种特定类型的 Blob,因此您可以重新创建一个(此示例使用 TypeScript):
interface FileBlob extends Blob {
lastModified: number;
name: string;
}
然后像使用标准文件一样使用FileBlob。