Ionic 2:FileTransfer 上传 windows 10 手机失败,适用于 iOS 和 Android

Ionic 2: FileTransfer upload windows 10 mobile fails, works on iOS and Android

我正在尝试将本地文件上传到 windows 10 phone 上的 AWS S3。我使用的代码适用于 Android 和 iOS(在此处使用 ionic-native wrapper https://ionicframework.com/docs/v2/native/transfer/):

  fileTransfer.upload(pathToFile, s3Url, options)
   .then((data) => {
     // blah bah
   }, (err) => {
     // error, poop.
   })

...但是 在 Windows 上失败 并出现此错误:

    {"code":3,
    "source":"C:/Data/Users/DefApps/AppData/Local/Packages/com.rareprominence.addvideo2_h35559jr9hy9m/LocalState/cameraCaptureVideo.mp4",  
    "target":"https://add-video-storage.s3.amazonaws.com/",  
    "http_status":null,
    "body":null,
    "exception":null}

我真的只是在尝试上传之前拍摄了视频,所以我知道它存在。

问)这是 Windows 10 移动版和 SSL 的问题吗?我需要做些什么才能允许通过 HTTPS 上传吗?

理论上,下载 AWS 证书应该与任何其他 HTTPS 端点相同。

概述步骤(凭记忆):

您正在获取 AWS 的证书并将其复制到应用程序本地文件夹。然后在应用程序清单中引用该证书。最后,还在应用程序清单中包含端点 URL(应与证书具有相同的域)。

我将从 Ionic 论坛复制(并编辑)详细信息 post:

Win phone aps 需要本地存储的证书才能通过 SSL 访问资源。

从服务器下载证书:通过浏览器进行,只需点击有问题的 URL 然后点击 URL 栏中的挂锁或类似按钮(每个浏览器都不同,或者您可以通过命令行中的 openssl 来完成。

例如在 Firefox 54 Developer 版本中,访问 url (https://aws.amazon.com/s3/),然后单击 URL 栏中的绿色挂锁。单击右箭头展开详细信息。然后单击 'more information' link 将调出页面信息的安全选项卡。选择 'view certificate',然后转到详细信息选项卡并选择 'export'。您可以在对话框中选择导出格式(这是您选择 DER 的地方)。

然后另存为 DER 类型 - 由于某种原因具有 .cer 扩展名。将证书保存到项目根目录,例如'aws-api-certificate.cer'

将以下内容添加到包中。windows10..appxmanifest

<Extensions>
    <!--Certificates Extension-->
    <Extension Category="windows.certificates">
        <Certificates>
            <Certificate StoreName="Root" Content="aws-api-certificate.cer" />        
        </Certificates>
    </Extension>
</Extensions>

如果需要,可以通过此方法添加额外的证书(我猜)。

确保在项目中包含 .cer,因为它需要包含在构建的包中。

确保将 AWS 端点 URL 包含在您的 Win 10 项目的端点列表中。同样,来自论坛 post:

Make sure the win 10 project's appxmanifest file contains a content URI for the data API:

https://api.example.com8 (Rule: include and WinRT: all)

Copy the api-certificate.cer file into the platform > windows folder (or use the ./reload-platform windows powershell script).

我已经好几个月没做这件事了,所以如果有任何变化,我深表歉意(理论上,它不应该,但理论很棒,理论上)。祝你好运:)