首页 > 解决方案 > Flutter:如何使用 HttpClient 将数据发送到服务器的进度百分比

问题描述

我想以多少百分比的进度向服务器发送相当大的数据,但它失败了。但是当我发送没有进展的数据时,它可以工作。向服务器发送数据时是否可以取得进展?这是我使用的代码。请帮忙谢谢

void postDataWithProgress() async {
  HttpClient httpClient = new HttpClient();
  var url = "https://xxxxxxx/api/adddata";
  HttpClientRequest request =
      await httpClient.postUrl(Uri.parse(url)).timeout(Duration(seconds: 10));

  var datavalue = {
    "listvideoname": ["a", "b", "c"],
    "listvideobase64": ["adahd", "ayuiary", "oukjfjka"]
  };
  var body = json.encode(datavalue);
  int byteCount = 0;
  var totalByteLength = body.length;

  Stream<String> mystream = new Stream.value(body);
  Stream<List<int>> streamUpload =
      mystream.transform(new StreamTransformer.fromHandlers(
    handleData: (data, sink) {
      byteCount += data.length;
    },
    handleDone: (sink) {
      sink.close();
    },
    handleError: (error, stackTrace, sink) {
      throw error;
    },
  ));
  request.contentLength = totalByteLength;
  request.addStream(streamUpload);

  request.headers
      .set("Content-Type", "application/json", preserveHeaderCase: true);
  request.headers
      .set("Authorization", "Bearer $token", preserveHeaderCase: true);

  request.add(utf8.encode(body));
  HttpClientResponse response = await request.close();
  if (response.statusCode == 200) {
    print("add data success");
  }else{
    print("add data error");
  }
}

标签: flutterdart

解决方案


推荐阅读