【问题标题】:timeout on large file (10-300Mo) upload using Firebase react-JS google-cloud-storage使用 Firebase react-JS google-cloud-storage 上传大文件(10-300Mo)超时
【发布时间】:2020-12-04 07:18:16
【问题描述】:

我在 Firebase 中启动了一个 WebApp,旨在将文件 (10-300Mo) 上传到谷歌存储并在内容上运行 ML。

我使用 react-JS 作为客户端来创建一个表单来上传文件并使用 firebase 模块 ('firebase/storage') 进行可恢复上传,如此处所述 (https://firebase.google.com/docs/storage/web/upload-files):

var uploadTask = storageRef.child('images/' + file.name).put(file, metadata);

上传在 Windows 10 上运行良好,但在 iOS(iPhone、iPad)上,它会挂起并在约 5-10 分钟后返回超时。这是非常可复制的。传输到超时的时间和字节取决于网络(WiFi 或 4G)。

我尝试调试 .put() 函数,但无法弄清楚为什么在几个块之后可恢复上传在 iOS 而不是 Windows 上超时。

有人遇到过同样的问题吗?有调试或解决问题的提示吗?

【问题讨论】:

    标签: ios reactjs firebase file-upload google-cloud-storage


    【解决方案1】:

    由于唯一不同的因素似乎是执行代码的设备,我会说问题在于代码或设备限制。

    我认为最好检查一下这种情况是否发生在不同的 devide 版本或所有版本中。

    您好。

    【讨论】:

    • 嗨,塞尔吉奥。感谢您的回答!我确实在几台设备上进行了测试(2 部 iPhone、1 部 iPad - Chrome 和 Safari 以及我的窗口笔记本电脑 - Chrome 和 Edge)。 iOS 超时,但在 Windows 上没有。我尝试了几个数据包长度,所以这与单个 HTTP PUT 无关,但似乎在我开始上传后的 60 秒时超时...您是否已经在经验中看到了这一点?
    • 我也看到了 60 秒的请求超时。建议将retry timed out requests 作为最佳实践,对于可恢复更新的情况,您可以尝试修改此github thread中提到的块大小
    • 再次感谢 Sergio 的快速回答。超时的不是对 GCS 的单个 PUT 请求,而是“主循环”。我用较小的块大小进行了测试,但没有帮助(我在 ADSL 上使用了 2Mo - put 需要 20 秒)。自整个上传开始后 60 秒后开始的第一个 PUT 仍然会挂起,并最终在 10 分钟后超时。它不会发生在 Windows 上。昨天我在 iOS 上尝试了 Firefox、Edge 和 DuckDuckGO,它们的行为相同......我在这里缺少一些基本的东西......
    • 我并不完全了解这些限制,从我的角度来看,我发现 Cloud Storage 可能由于这些限制而具有不同的行为,我们似乎缺少这些限制,这似乎是由于您的测试,设备级别。
    猜你喜欢
    • 2020-04-04
    • 2021-03-19
    • 2021-04-25
    • 2018-10-31
    • 1970-01-01
    • 2019-04-08
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多