首页 > 解决方案 > Flutter/Dart SocketException 将视频文件上传到 URL

问题描述

我在尝试将视频文件上传到指定 URL 时收到此错误消息:

DioError (DioError [DioErrorType.DEFAULT]: SocketException: OS Error: Connection reset by peer, errno = 54, address = storage.googleapis.com, port = 64995)

注意:这是DioError因为我正在使用dioDart/Flutter 包:https : //pub.dev/packages/dio 我使用http库等等效 API 收到错误。

上传从存储中选择的视频文件的代码:

        //File videoFile...

        FormData data = FormData.fromMap({
          "videoFile": await MultipartFile.fromFile(videoFile.path),
        });
    
        Response response = await Dio().post(
          directUpload.url,
          data: data,
          onSendProgress: (int sent, int total) {
            print("$sent $total");
          },
        );

URL ( directUpload.url) 是由 Mux API 生成并提供给他们的 Google Cloud Storage 的。

https://storage.googleapis.com/video-storage-us-east1-uploads/...

调用时post,上传少量(如655524 / 17840042),然后出现错误。测试视频大小为 17.8 Mb。

在 iOS 设备或 iOS 模拟器上运行它会产生相同的结果/错误。


我尝试过:flutter clean、、flutter upgrade删除Podfilepod repo update从设备中删除应用程序。一切都无济于事。

标签: iosflutterdartuploadmux

解决方案


从 POST 更改为 PUT 请求可解决此问题。


推荐阅读