Ios Cordova Mobile:Web文件API没有';工作不正常

Ios Cordova Mobile:Web文件API没有';工作不正常,ios,cordova,ionic-framework,capacitor,fileapi,Ios,Cordova,Ionic Framework,Capacitor,Fileapi,我们最近将Cordova应用程序迁移到电容器。 我目前正在开发一个功能,它使用Canvas blob数据创建(WebAPI),我们将其发送到一个API。 但我注意到Web视图中的文件API已经过时且已损坏: 在屏幕截图中,我正在用iOS 14.3在iPhone8上调试该应用程序,您会注意到文件的大小始终为零,并且name属性以某种方式保存了实际数据。(e是一个Blob) 第一个示例显示如何从blob创建文件,但之后该文件的大小为0,名称为BlobArray const e=blob; 新文件([

我们最近将Cordova应用程序迁移到电容器。 我目前正在开发一个功能,它使用Canvas blob数据创建(WebAPI),我们将其发送到一个API。 但我注意到Web视图中的文件API已经过时且已损坏:

在屏幕截图中,我正在用iOS 14.3在iPhone8上调试该应用程序,您会注意到文件的大小始终为零,并且name属性以某种方式保存了实际数据。(
e
是一个Blob)

第一个示例显示如何从blob创建文件,但之后该文件的大小为0,名称为BlobArray

const e=blob;
新文件([e],'asdf',{type:e.type})
第二个示例显示了基本示例,它在Chrome和桌面Safari中运行良好,但在移动设备上也使用字符串数组作为名称

新文件([“foo”],“foo.txt”{
键入:“文本/普通”,
});

我也在iOS Safari浏览器中试用过,效果很好

因此,我不得不假设我们的电容器应用程序使用了过时的Safari版本。 不幸的是,我找不到关于如何为Ionic/Capactor设置WebView/Safari版本的任何信息

以下是我的设置:

  • 设备:iPhone8
  • iOS版本:14.3
  • 爱奥尼亚应用程序的用户代理:
Mozilla/5.0(iPhone;CPU iPhone OS 14_3,如Mac OS X)AppleWebKit/605.1.15(KHTML,如Gecko)Mobile/15E148

  • iOS Safari的用户代理:
Mozilla/5.0(iPhone;CPU iPhone OS 14_3,如Mac OS X)AppleWebKit/605.1.15(KHTML,如Gecko)版本/14.0.2 Mobile/15E148 Safari/604.1

软件包和版本:

“@capactor/cli”:“2.4.6”,
“@电容器/铁芯”:“2.4.6”,
“@电容器/ios”:“^2.4.6”,
“爱奥尼亚”:“^5.4.14”,
“@ionic/angular”:“^5.4.1”,
“@ionic/angular toolkit”:“~2.0.0”,
“爱奥尼亚原生”:“^2.9.0”,
“@ionic native/file transfer”:“^5.29.0”,
“cordova插件文件”:“^6.0.2”,

有没有办法为WebView设置Safari版本,或者这可能是我们的配置错误(因为迁移到电容器)?

我能想到的唯一有用的方法是尝试更改或更新到另一个版本的
@capacer/ios
。这个包是控制Capactor使用的webview的一部分。我不认为有办法直接设置它


我制作了一个虚拟项目,使用了
“@capactor/ios”:“^2.4.5”
,并运行了您发布的第二个示例。对我来说效果很好。

通过查看调试器中的文件原型,我注意到文件构造函数完全不同

我在谷歌上搜索了代码片段,发现代码来自。 插件将覆盖全局文件变量。 因此,文件Web API不再可用

通过删除插件(以及依赖它的插件),我们能够解决这个问题


相关Github问题:

您能分享一些创建文件对象的代码吗?@johnborges感谢您的快速响应!我可以这样做,但这无助于解决这个问题。屏幕截图已经显示了这个问题的一个简单例子。如您所见,简约示例(取自MDN)创建了一个大小错误、名称无效的文件。我将进行编辑,将示例添加为代码,并添加到MDN的链接。我刚刚更新到
2.4.6
,但它仍然不起作用。所以问题可能出在其他地方(从cordova升级到电容器?)。。。我将建立一个干净的,新的项目,并将比较差异。谢谢你的回答!